この投稿で回答されているものと同様の問題があります。
その投稿で回答として提供された正規表現をテストすると、期待どおりに機能しました。
$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
(
)
)
最初の例で関数をテストするために使用した文字列は、2 番目の例で $str の値をエコーアウトし、それをコピーして貼り付けることによって得られました。
同じ文字列が異なる結果を返す理由がわかりません。また、文字列を変数に貼り付けると正常に動作するのに、CSV から文字列を取得すると一致が見つからないのはなぜですか?