#php #regex
#php #регулярное выражение
Вопрос:
Я попробовал следующий код:
preg_match_all("/'<span> '
'(.*?) Reviews/s", $data, $matches);
Я пытаюсь получить количество отзывов, вот пример $data:
'<span> '
'319 Reviews </span> '
'</div> '
Мой скрипт возвращает $matches array empty
— есть идеи?
Ответ №1:
Вы можете попробовать этот шаблон:
/'<span> ' s*'K[0-9] (?= Reviews)/
s
является символьным классом для всех символов пробелов (включая новые строки)
K
означает не использовать и удалить все слева от результата сопоставления
(?=...)
это предварительный просмотр, который проверяет, что следует, не включая это в результат сопоставления.
Комментарии:
1. Что насчет новой строки?
2. @zerkms: перевод строки сопоставляется с
s*
и является необязательным, поскольку здесь это не важный элемент синтаксиса javascript. (оно находится за пределами строки)
Ответ №2:
Вы могли бы использовать приведенное ниже регулярное выражение, в котором используется модификатор Dotall( s
),
/'<span> ' .'Kd (?= Reviews)/s
или
вы могли бы использовать lookbehind с s
модификатором,
/(?<='<span> ' .')d (?= Reviews)/s