Имеется примерно такой текст:
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"
}
}
Может регулярное выражение на каких-то случаях может давать неверный результат, но во многих случаях работает, более продвинутые регулярные выражения с РФ доменами и т.д. можно найти в интернете под требуемую задачу :)
Комментариев нет:
Отправить комментарий