Как получить все текстовые ссылки с текста?

253
28 марта 2017, 14:29

Всем привет. Проблема. Есть переменная.

$text = 'В нашей строке присутсвуют следующие ссылки: http://snipcode.ru, ftp://php.net и https://google.com'; 

Как с этой переменной получить все ссылки в массив?

Пробовал так

preg_match_all('/<a[^>(href=)]+href="http:\/\/(www\.)?hashcode.ru"[^>]+>([A-Za-zА-Яа-я0-9 ]+)<\/a>/isu', $text, $array);
print_r($array);

В итоге получил массив - Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) )

Но что-то я с этого массива никак не могу глянуть, какие там ссылки.

Пробую посмотреть ссылку print_r($array[0]); получаю Array ( )
Помогите разобраться, в php не силен. Что смог накопать, тем делюсь.

Answer 1

С предположением, что отделять ссылки могут только запятые и пробельные символы:

$text = 'В нашей строке присутсвуют следующие ссылки: http://snipcode.ru, ftp://php.net и https://google.com'; 
preg_match_all('#(?:https?|ftp)://[^\s\,]+#i', $text, $matches);
var_dump($matches);

Результат:

array(1) {
  [0]=>
  array(3) {
    [0]=>
    string(18) "http://snipcode.ru"
    [1]=>
    string(13) "ftp://php.net"
    [2]=>
    string(18) "https://google.com"
  }
}
Answer 2
$text = 'В нашей строке присутсвуют следующие ссылки: http://snipcode.ru, ftp://php.net и https://google.com';
preg_match_all("_(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?_iuS", $text, $urls);
var_dump($urls);

https://repl.it/GfwT/0

READ ALSO
arr1=range(&ldquo;A&rdquo;, &ldquo;z&rdquo;); $arr2= range(0,9);

arr1=range(“A”, “z”); $arr2= range(0,9);

Как сделать, чтобы указав N число из этих массивов, печатать случайным образом и цифры и буквы?

194
PHP слияние двух массивов

PHP слияние двух массивов

Добрый день всем! есть два массива,один с ссылками,второй с ссылками на фото

251
Ajax отправка формы с приложенным файлом

Ajax отправка формы с приложенным файлом

Доброго времени сутокМожет есть у кого в заметках как реализовать отправку формы с файлом(файлами) на Ajax?

231
Как получить ID всех постов wordpress?

Как получить ID всех постов wordpress?

Как получить массив хранящий в себе ID всех постов(только постов, не страниц) в Wordpress ?

314