如何使用php获取引号括起来的文本

时间:2015-01-15 04:16:06

标签: php string

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

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不具备此功能吗?得到一些分隔符包围的字符串?

3 个答案:

答案 0 :(得分:2)

如果您的所有记录都与您提到的记录相似,我认为这是您可以使用正则表达式的完美位置。

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

对于您的情况,您可以使用:

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

答案 1 :(得分:1)

尝试:

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

$ result包含所有匹配项。 更多信息:{{3p>

答案 2 :(得分:0)

我认为您可以使用str_replace删除&#34;

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