Поиск данных с помощью функции 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"