Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: фильтрующая регулярка
 
 автор: rurgil   (09.03.2014 в 12:48)   письмо автору
 
 

здравствуйте.это вопрос о ссылках в комментариях.
этот код размещает ссылки,можно размещять видимое фото изменив код,так вот в чем вопрос,как создать в одном коде используя регулярные выражения,например при .jmg .png .giv ,был редирект на нужный обработчик?
    function replace($url){ 
         $url = str_replace("\\r","\r",$url); 
         $url = str_replace("\\n","\n<BR>",$url); 
         $url = str_replace("\\n\\r","\n\r",$url); 

         $in=array( 
         '`((?:https?|ftp)://\S+[[:alnum:]]/?)`si', 
         '`((?<!//)(www\.\S+[[:alnum:]]/?))`si' 
         ); 
         // это для ссылок 
         $out=array( 
         '<a style="color:navy;" href="$1"  rel="nofollow">$1</a>', 
         '<a style="color:navy;" href="http://$1" rel=\'nofollow\'>$1</a>' 
         ); 
          // это для фото 
         $out=array( 
         '<img src="$1"  rel="nofollow">', 
         '<img src="http://$1" rel=\'nofollow\'>' 
         ); 
               return preg_replace($in, $out, $url); 
     } 
?>  

  Ответить  
 
 автор: duhon   (12.03.2014 в 14:57)   письмо автору
 
   для: rurgil   (09.03.2014 в 12:48)
 

<?php
    
function replace($url){  
         
$url str_replace("\\r","\r",$url);  
         
$url str_replace("\\n","\n<BR>",$url);  
         
$url str_replace("\\n\\r","\n\r",$url);  

         
$in=array(  
              
'`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',  
              
'`((?<!//)(www\.\S+[[:alnum:]]/?))`si',
              
'`((?:https?|ftp)://\S+[[:alnum:]]\.(png|jpeg|jpg|gif)\b`si',    
              
'`((?<!//)(www\.\S+[[:alnum:]]\.(png|jpeg|jpg|gif)\b))`si' 
         
);  
         
// это для ссылок  и фото
         
$out=array(  
              
'<a style="color:navy;" href="$1"  rel="nofollow">$1</a>',  
              
'<a style="color:navy;" href="http://$1" rel=\'nofollow\'>$1</a>',
              
'<img src="$1"  rel="nofollow">',  
              
'<img src="http://$1" rel=\'nofollow\'>'  
         
);  
         return 
preg_replace($in$out$url);  
     }  

Подходит?

  Ответить  
 
 автор: rurgil   (13.03.2014 в 23:03)   письмо автору
 
   для: duhon   (12.03.2014 в 14:57)
 

к великому сожалению нет,выдает ошибку
Warning: preg_replace() [function.preg-replace]: Compilation failed: missing ) at offset 54 in /home/shamil/domains/tin-l.ru/public_html/admin/functions.php on line 319

может с условием и preg_match нужно???

  Ответить  
 
 автор: rurgil   (19.03.2014 в 01:01)   письмо автору
 
   для: rurgil   (13.03.2014 в 23:03)
 

практически разобрался, в вашей поправке не хватало символов,я исправил,и все сработало

    function replace($url){ 
         $url = str_replace("\\r","\r",$url); 
         $url = str_replace("\\n","\n<BR>",$url); 
         $url = str_replace("\\n\\r","\n\r",$url); 
         $in=array(  
             '`((?:https?|ftp)://\S+[[:alnum:]]/?)`si',
             '`((?<!//)(www\.\S+[[:alnum:]]/?))`si',
             '`((?:https?|ftp)://\S+[[:alnum:]]\.(png|jpeg|jpg|gif)\b/?)`si',
             '`((?<!//)(www\.\S+[[:alnum:]]\.(png|jpeg|jpg|gif)\b/?))`si'
         );  
         $out=array( 
         '<a href="$1" rel="nofollow">$1</a>',
         '<a href="http://$1" rel=\'nofollow\'>$1</a>',
         '<img style="width:200px;" src="$1" alt="" />',
         '<img style="width:200px;" src="http://$1" alt="" />'  
         ); 
               return preg_replace($in, $out, $url); 
     }         


но теперь вместе с фото всплывает rel="nofollow" . так как это ссылочный атрибут для "а",
вот для img,src чтобы можно было придумать в регулярном выражении!""???

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования