如何使用 php 获取引号内的文本

how to get the text enclosed by quotations using php

所以我有一个非常大的转储文件,我必须从中提取特定内容。 该文件有记录,每条记录都包含用 " 括起来的特定数字。下面是文件的示例部分:

Ali Rabi (CustomerId=["3453456"]) // need to get: 3453456
Mohammad Reza Saberi (CustomerId=["12328"]) // need to get: 12328

目前我逐行阅读并获得如下ID。代码工作正常,我得到了我想要的结果:

$cid = substr($row, strpos($row, '[') +2, strpos($row, ']')-strpos($row, '[')-2);
echo $cid;

但是 PHP 没有这方面的功能吗?获取由一些定界符括起来的字符串?

我认为您可以使用 str_replace 删除“

$cid = str_replace('"','',$row);

如果您的所有记录看起来都像您提到的那些,我认为这是您可以使用正则表达式的完美场所。

正则表达式可帮助您在给定字符串中创建和查找模式。

对于你的情况,你可能会使用:

if (preg_match("/[0-9]+/", "Ali Rabi (CustomerId=[\"3453456\"])", $matches)) {
  echo "Match was found <br />";
  echo $matches[0];
}

preg_match() 函数可帮助您找到匹配项。此函数的第一个参数是您要查找的模式。在您的情况下,您正在寻找一组连续的数字,每个数字的范围为 0-9。

因此,对于单个数字,我们使用 [0-9]。在 [0-9] 后添加 + 表示匹配中至少需要一位数字。因此,[0-9]+ 作为正则表达式。

阅读 php 中有关正则表达式的更多信息:http://webcheatsheet.com/php/regular_expressions.php

尝试:

<?php preg_match_all("/([1-9]+)/",$yourtext, $result, PREG_PATTERN_ORDER); ?> 

$result 包含所有匹配项。 更多信息:http://php.net/manual/de/function.preg-match-all.php