Поиск данных с помощью функции preg_match

Admin PHP, PHP Errors

preg_match — является функция поиска в PHP. Если функция preg_replace убирает текст, то с помощью preg_match можно находить конкретные данные и сохранять их в переменную для последующего вывода.

Если нужна функция замены в PHP при поиске данных, то она называется preg_replace.

Функция работает следующим образом.

В первом параметре, с помощью регулярных выражений задаются критерии поиска.

Во втором параметре, содержится информация, в которой необходимо найти данные.

Последний параметр, то куда мы будем сохранять найденные данные.

Найдём все что лежит внутри тега H2:

preg_match("/<h2>(.*?)<\/h2>/s", $gde_ishem, $kuda_sohranyaem);

Альтернативный вариант:

preg_match("|\<h2.*\>(.*\n*)\</h2\>|isU", $content, $matches);

Найдем конкретный тег:

preg_match('/(<div.*class="price">).*(<\/div>)/i', $content, $matches);

Находим строку со словом заголовок, которая находится в таблице HTML, между тегами TR:

preg_match("/<tr[^>](.*?)заголовок(.*?)<\/tr>/s", $content, $matches);

Пример 1

Нужно найти ссылку или значение внутри неё.

Это выражение поможет найти данные в ссылке:

preg_match("/(<a.*?>)(.*?)(<\/a>)/", $content, $matches);

При этом:
matches [0] — выведет ссылку с элементом
matches [2] — выведет только элемент внутри ссылки

Вывод содержимого preg_match:

print($matches [0]);

или

echo $matches [1];

Параметр [0] — выводит всё найденное содержимое, а если его поменять на [2] — то часть строки, которая соответствует второй подмаске (круглые скобки).

Пример 2

Имеем такое выражение сложения и равенства:

$content = 100 + 200 = 300;

Найдем его отдельные значения:

preg_match("/(.*)=(.*)/", $content, $matches);

Выведем из него значение 300:

echo matches[3];

Если нам нужна только средняя цифра из примера, мы можем найти выражение иначе:

preg_match("/(\+.*\;=.)/", $content, $matches);

Этим способом мы найдём:

"+ 200 = "

Если нужно оставить только цифру 200, это можно сделать с помощью функции preg_replace.

Пример 3

Найти адрес ссылки внутри изображения:

< *img[^>]*src *= *["\']?([^"\']*)

Ошибки в preg_match

Ошибка такого рода:

Warning: preg_match() expects parameter 2 to be string, array given in \index.php on line 49

Означает, что второй параметр (то в чем мы ищем) должен быть строкой. Это, конечно ни о чем не скажет, если мы не знаем, что подразумевается под строкой (string). Однако, предположим, мы всё же знаем, а поэтому переведём значение из массива в строку:

$string = implode(", ", $array);

Теперь при поиске preg_match не будет ругаться и успешно выведет нужные данные.

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"Поиск данных с помощью функции preg_match"