У меня есть аналогичная проблема с тем, на что ответили в этой статье .
Когда я проверяю регулярное выражение, предоставленное в качестве ответа на этом посту, он работал, как ожидалось:
$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 ) )
Проблема возникает, когда я пытаюсь использовать это для обработки данных из CSV, которые я преобразовал в массив в цикле foreach:
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, совпадений не найдено?