- Извлечение данных с помощью регулярных выражений PHP
- Текст из скобок
- Результат:
- Текст из HTML тегов
- Результат:
- URL из текста
- Результат:
- href из ссылок
- Результат:
- Анкоры ссылок
- Результат:
- Src из тегов img
- Результат:
- E-mail адреса из текста
- Результат:
- Цвета
- HEX/HEXA
- Результат:
- RGB/RGBA
- Как найти все ссылки на странице через PHP
- Комментарии ( 7 ):
- Find and Extract All links From a HTML String in PHP
- Example 1: Get All Links From HTML String Value
- Example 2: Get All Links From a Web Page
- Related Posts:
- Как собрать все ссылки на сайте, php?
- Войдите, чтобы написать ответ
- Какой самый простой способ собрать PDF файл с данными из БД?
Извлечение данных с помощью регулярных выражений PHP
Получение данных с помощью функций preg_match() и preg_match_all() .
Текст из скобок
Извлечение содержимого из круглых, квадратных и фигурных скобок:
$text = ' Телеобъектив: диафрагма [ƒ/2.8] Широкоугольный объектив: (диафрагма ƒ/1.8) По беспроводной сети: Поддержка диапазона: '; /* [. ] */ preg_match_all("/\[(.+?)\]/", $text, $matches); print_r($matches[1]); /* (. ) */ preg_match_all("/\((.+?)\)/", $text, $matches); print_r($matches[1]); /* */ preg_match_all("/\<(.+?)\>/", $text, $matches); print_r($matches[1]); /* */ preg_match_all("/\<(.+?)\>/", $text, $matches); print_r($matches[1]);
Результат:
Array ( [0] => ƒ/2.8 ) Array ( [0] => диафрагма ƒ/1.8 ) Array ( [0] => до 13 часов ) Array ( [0] => Dolby Vision и HDR10 )
Текст из HTML тегов
$text = ' Тег H1
Текст 1
Текст 2
'; /* */ preg_match('/]*?>(.*?)/si', $text, $matches); echo $matches[1]; /* */ preg_match('/]*?>(.*?)/si', $text, $matches); echo $matches[1]; /* Извлекает текст из всех
*/ preg_match_all('/
]*?>(.*?)/si', $text, $matches); print_r($matches[1]);
Результат:
Тег TITLE Тег H1 Array ( [0] => Текст 1 [1] => Текст 2 )
URL из текста
$text = 'Text http://ya.ru text http://google.ru text.'; preg_match_all('/(http:\/\/|https:\/\/)?(www)?([\da-z\.-]+)\.([a-z\.])([\/\w\.-\?\%\&]*)*\/?/i', $text, $matches); print_r($matches[0]);
Результат:
Array ( [0] => http://ya.ru [1] => http://google.ru )
href из ссылок
$text = ' Яндекс Google Mail.ru '; preg_match_all('//i', $text, $matches); print_r($matches[1]);
Результат:
Array ( [0] => http://ya.ru [1] => http://google.ru [2] => http://mail.ru )
Анкоры ссылок
$text = ' Яндекс Google Mail.ru '; preg_match_all('/(.*?)/i', $text, $matches); print_r($matches[1]);
Результат:
Array ( [0] => Яндекс [1] => Google [2] => Mail.ru )
Src из тегов img
$text = 'text text'; preg_match_all('//is', $text, $matches); print_r($matches[1]);
Результат:
E-mail адреса из текста
$text = 'text admin@mail.ru text text text admin@ya.ru'; preg_match_all('/([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]/i', $text, $matches); print_r($matches[0]);
Результат:
Array ( [0] => admin@mail.ru [1] => admin@ya.ru )
Цвета
HEX/HEXA
$css = ' body < color: #000; background: #4545; >header < color: #111111; background: #00000080; >'; preg_match_all('/#(?:[0-9a-f])/i', $css, $matches); print_r($matches[0]);
Результат:
Array ( [0] => #000 [1] => #4545 [2] => #111111 [3] => #00000080 )
RGB/RGBA
$css = ' body < color: rgb(0,0,0); background: rgba(17,85,68,0.33); >header < color: rgb(17,17,17); background: rgba(0,0,0,0.5); >'; preg_match_all('/((rgba)\((\d,\s?)(1|0?\.?\d+)\)|(rgb)\(\d(,\s?\d)\))/i', $css, $matches); print_r($matches[0]);
Array ( [0] => rgb(0,0,0) [1] => rgba(17,85,68,0.33) [2] => rgb(17,17,17) [3] => rgba(0,0,0,0.5) )
Как найти все ссылки на странице через PHP
Иногда перед программистом стоит не самая простая задача: найти все ссылки на странице с помощью PHP. Где это может быть нужно? Да, много где, например, при выводе одного сайта на другом. Для этого требуется вытащить из него все ссылки и заменить на другие. Также поиск ссылок используется при создании ЧПУ-ссылок, ведь нужно вытащить все старые ссылки и поставить заместо них новые. В общем, задач можно придумать много, но ключевой вопрос всего один: «Как найти все ссылки на странице через PHP?«. Об этом я и написал данную статью.
Кто имеет хотя бы маленький опыт, тут же скажет, что надо написать регулярное выражение и будет абсолютно прав. Действительно, простыми строковыми функциями данную задачу будет крайне трудно решить. Ведь каждый пишет по-разному, кто-то прописными бувами, кто-то строчными, кто-то ставит пробел после, например, знака «=«, а кто-то нет. У кого-то двойные кавычки, а у кого-то одинарные. В общем, разновидностей очень много. И единственная возможность предусмотреть максимум всего — это регулярное выражение.
Самая сложная часть — это регулярное выражение, ради его публикации данная статья и создавалась, чтобы новичкам не пришлось писать нечто подобное. Хотя это и является очень полезным, но сразу новичок такое никогда не напишет, а для решения задачи это требуется. Конечно, данное регулярное выражение по поиску ссылок неидеальное (едва ли можно написать идеальное), но, думаю, что 99% ссылок будут найдены. А если код писал адекватный верстальщик, то все 100%. А как работать с найденными ссылками дальше, это уже отдельная история.
Создано 26.09.2012 10:08:17
Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!
Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.
Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
- Кнопка:
Она выглядит вот так: - Текстовая ссылка:
Она выглядит вот так: Как создать свой сайт - BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии ( 7 ):
а почему бы просто не воспользоваться функцией getElementsByTagNam(‘a’) ?
SoffRick http://php.net/manual/ru/class.domdocument.php почитайте, а потом умничайте
А DOM в таком случае не целесообразнее использовать? Вроде и проще, и, к тому же, есть достаточно библиотек для этого.
Find and Extract All links From a HTML String in PHP
Inside this article we will see the concept of find and extract all links from a HTML string in php. Concept of this article will provide very classified information to understand the things.
This PHP tutorial is based on how to extract all links and their anchor text from a HTML string. In this guide, we will see how to fetch the HTML content of a web page by URL and then extract the links from it. To do this, we will be use PHP’s DOMDocument class.
DOMDocument of PHP also termed as PHP DOM Parser. We will see step by step concept to find and extract all links from a html using DOM parser.
Example 1: Get All Links From HTML String Value
Inside this example we will consider a HTML string value. From that html value we will extract all links.
Create file index.php inside your application.
Open index.php and write this complete code into it.
Google Youtube Online Web Tutor