我需要在字符串中搜索一个字符串并获取其后面的部分(没有空格)。
示例:
This ABC-Code: 12 3 45
Another ABC-Code: 678 9
现在我正在搜索关键字ABC-Code:
,我希望在此之后获取数字(删除空格),结果将是:
12345
6789
我试图用substr()来解决这个问题,但问题是,以前的字符是可变的。所以我想我必须使用RegEx,如下:
preg_match("#ABC-Code:(.*?)\n#", $line, $match);
trim($match); // + remove spaces in the middle of the result
答案 0 :(得分:2)
您需要使用preg_replace_callback
功能。
$str = <<<EOT
This ABC-Code: 12 3 45
Another ABC-Code: 678 9
EOT;
echo preg_replace_callback('~.*\bABC-Code:(.*)~', function ($m)
{
return str_replace(' ', '', $m[1]);
}, $str);
<强>输出:强>
12345
6789
答案 1 :(得分:1)
您可以使用:
preg_match('#ABC-Code: *([ \d]+)\b#', $line, $match);
然后使用:
$num = str_replace(' ', '', $match[1]);
// 12345
为你编号。
答案 2 :(得分:0)
您仍然可以使用substr:
执行此操作$string = 'This ABC-Code: 12 3 45';
$search = 'ABC-Code:';
$result = str_replace(' ', '', substr($string, strpos($string, $search) + strlen($search)));
但其他答案中的正则表达式肯定更漂亮:)