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 :: Версия для печати :: Ничего не понимаю
Форумы портала PHP.SU » PHP » Регулярные выражения » Ничего не понимаю

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

1. Хенаро - 03 Июня, 2015 - 23:30:23 - перейти к сообщению
Скажите, почему совпадение находит?
PHP:
скопировать код в буфер обмена
  1. echo preg_match('/\b(https?:\/\/(www\.)?[^y][^o][^u][^t][^u][^b][\S]+)/si', 'https://www.youtube.com/watch?v=hhTeUrJCywQ');


Уже не знаю что и думать и как быть, тут совпадения нет и всё рабно оборачивает в тэг а
PHP:
скопировать код в буфер обмена
  1. function get__code($text){
  2.     $text=htmlspecialchars($text);
  3.     $text=str_replace(
  4.     array("<pre data-rel='php'>",
  5.      "<pre data-rel='javascript'>",
  6.       "<pre data-rel='html'>",
  7.        "<pre data-rel='css'>",
  8.        "<pre data-rel='mysql'>",
  9.         "</pre>"),
  10.          array("<pre data-rel='php'><code>",
  11.           "<pre data-rel='javascript'><code>",
  12.            "<pre data-rel='html'><code>",
  13.             "<pre data-rel='css'><code>",
  14.             "<pre data-rel='php'><code>",
  15.             "</code></pre>"), $text);
  16.            
  17.            $text = preg_replace('/\b(https?:\/\/(www\.)?(?!yotube)[\S]+)/si', '<a target="_blank" href="$1">$1</a>', $text);
  18.            return $text;
  19. }
2. Мелкий - 03 Июня, 2015 - 23:39:40 - перейти к сообщению
Находимся в позиции 0.
(https?:\/\/(www\.) есть, ок. Дальше любой символ кроме y, а там как раз y, не подходит. Идём дальше.
Смещаемся в позицию 1
(https?:\/\/(www\.) нету, ну и фиг с ним. Дальше любой символ кроме y. В позиции 1 это t - очень даже подходит, радостно жрём и идём дальше, не встречая преград.
3. Хенаро - 04 Июня, 2015 - 00:17:15 - перейти к сообщению
Мелкий, подскажи как же верно написать?
Вот здесь всё прекрасно работает, но только если одна ссылка в тексте, поэтому переделываю Не понял
PHP:
скопировать код в буфер обмена
  1. preg_match_all('/\bhttp[s]?:\/\/(www\.)?[^y][^o][^u][^t][^u][^b][\S]+/s', $text, $atch);
  2.             if($atch[0]){
  3.                 foreach($atch[0] as $http){
  4.             $text = str_replace($http, "<a target='_blank' href='$http'>$http</a>", $text);
  5.        }
  6.                
  7.             }
  8.             preg_match_all('/\bhttps:\/\/www\.youtube\.com\/(watch\?v=).*\b/s', $text, $match);
  9.             if($match[0]){
  10.        
  11. foreach($match[0] as $val){
  12.        
  13.         $text = str_replace($val, "<br><iframe width='560' height='315' src='$val' frameborder='0' allowfullscreen></iframe><br>", $text);
  14.     }
  15. foreach($match[1] as $val1){
  16.     $text = str_replace($val1, 'embed/', $text);
  17. }

 

Powered by ExBB FM 1.0 RC1