我有一个与这篇文章中回答的问题类似的问题。
当我测试作为该帖子中答案提供的正则表达式时,它按预期工作:
$str = 'Days - £9.20 to £11.20 Sat - £11.80 Sun - £13.30';
preg_match_all("/£\s*\d+(?:\.\d+)?/", $str, $matches);
print_r($matches);
// Produces
Array
(
[0] => Array
(
[0] => £9.20
[1] => £10.20
[2] => £11.80
)
)
当我尝试使用它来处理来自我已在 foreach 循环中转换为数组的 CSV 数据时,问题就出现了:
foreach($arrJobs as $job)
{
$str = $job['payDetails1'] . ' ' . $job['payDetails2'];
// Try to find salary from string
preg_match_all("/£\s*\d+(?:\.\d+)?/", $str, $matches);
print_r($matches);
}
// In this example the output from every item is an empty array:
Array
(
[0] => Array
(
)
)
我在第一个示例中用于测试函数的字符串是通过在第二个示例中回显 $str 的值并复制和粘贴它来获得的。
我不明白为什么相同的字符串会返回不同的结果?为什么当我将字符串粘贴到变量中时它可以正常工作,但是从 CSV 中检索字符串时却找不到匹配项?