Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Вытащить ссылки из html-кода - PHP
Форумы портала PHP.SU » PHP » Регулярные выражения » Вытащить ссылки из html-кода - PHP

Страниц (1): [1]
 

1. Seleba007 - 03 Октября, 2016 - 15:44:46 - перейти к сообщению
В базе данных хранится данные в виде html-тегов:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. html: <script type="text/javascript" src="/jwplayer/jwplayer.js"></script> <div id="myElement">ГђпїЅГђ°ГђВіГ‘пїЅГ‘пїЅГђ·ГђВєГђ° ГђВїГђ»ГђµГђµГ‘пїЅГђ°...</div> <script type="text/javascript"> jwplayer("myElement").setup({ file: "https://nas.dcp24.ru/preview/NEWERAZ_TRL_SCOPE.mp4", image: "https://nas.dcp24.ru/thumb/NEWERAZ_TRL_SCOPE.jpg", width: 560, height: 315, title: "ГђпїЅГђВѕГђВІГђ°Г‘пїЅ Г‘пїЅГ‘пїЅГђ° Z" }); </script>
  3.  

А мне нужно получить отдельно две ссылки: https://nas.dcp24.ru/preview/NEWERAZ_TRL_SCOPE.mp4, https://nas[dot]dcp24[dot]ru/thumb/NEWERAZ_TRL_SCOPE[dot]jpg используя php. Подскажите, пожалуйста как это можно сделать!
2. Fart - 03 Октября, 2016 - 18:31:50 - перейти к сообщению
можно так:

1. только ссылки:

preg_match_all("/http.+mp4|http.+jpg/", $t, $a);
var_dump($a);

2. ссылки с расширением файлов:

preg_match_all("/http.+(jpg|mp4)/U", $t, $a);
var_dump($a);

однако хочу оговориться: если данные с чужого сайта и результат регулярки выкладывать к себе на сайта, то такая выборка небезопасна. есть риск в "ответку" получить xss-атаку.

стоит обезопасить, к примеру:

1. только ссылки

preg_match_all("/http[^<>]+mp4|http[^<>]+jpg/", $t, $a);
var_dump($a);

2. ссылки с расширением файлов:

preg_match_all("/http[^<>]+(jpg|mp4)/U", $t, $a);
var_dump($a);

далее проверяешь: имеется ли ссылка, если нет - значит данные могут быть с xss
(Добавление)
лучший вариант с исключением xss (если не будет соответствовать ссылке в примере то будут данные пустые):

preg_match_all("/http[s]*:\/\/\w+\.*\w+\.\w+\/\w+\/\w+\.(jpg|mp4)/U", $t, $a);
var_dump($a);

 

Powered by ExBB FM 1.0 RC1