Страницы

Поиск по вопросам

среда, 13 марта 2019 г.

Как можно поместить url адреса из строки в массив?

Имеется примерно такой текст:
1.http://example.com(example) (пробела перед http нет намеренно) 2. https://vk.com (vk) 3. И так далее
Я хочу средствами php получить массив, который содержит только url адреса, без стороннего текста. Подскажите, какими методами это будет удобнее и правильнее всего сделать, хочу понять сам принцип.


Ответ

Для того, чтобы вытащить все URL адреса из текста, нужно использовать регулярные выражения. Для новичка это будет не совсем легко, ну а что делать? :)
$string = "1.http://example.com(example) (пробела перед http нет намеренно) 2. https://vk.com (vk) 3. И так далее";
$regExp = "/(?:http)?[s]?\:\/\/[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(?:\/\S*)?/";
preg_match_all($regExp, $string, $values);
var_dump($values);
Результат:
array(1) { [0]=> array(2) { [0]=> string(18) "http://example.com" [1]=> string(14) "https://vk.com" } }
Может регулярное выражение на каких-то случаях может давать неверный результат, но во многих случаях работает, более продвинутые регулярные выражения с РФ доменами и т.д. можно найти в интернете под требуемую задачу :)

Комментариев нет:

Отправить комментарий