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. zilon - 04 Декабря, 2013 - 14:23:59 - перейти к сообщению
вот такую регулярку составил, она меняет

PHP:
скопировать код в буфер обмена
  1. function zamenalik_category ($links)
  2.  
  3. {
  4.  
  5.     $links = preg_replace ("/(<li><a.*?href=\").*?(<\/a><\/li>)/s", "$1/урл_ссылки/\">название_ссылки$2", $links);
  6.     return $links;
  7.  
  8. }


CODE (html):
скопировать код в буфер обмена
  1. <ul class="reset">
  2.            <li><a href="/">Главная</a></li>
  3.            <li><a href="#">Регистрация</a></li>
  4.            <li><a href="#">Контакты</a></li>
  5.            <li><a href="#">Правила</a></li>
  6. </ul>


на

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <ul class="reset">
  3.            <li><a href="/урл_ссылки/">название_ссылки</a></li>
  4.            <li><a href="/урл_ссылки/">название_ссылки</a></li>
  5.            <li><a href="/урл_ссылки/">название_ссылки</a></li>
  6.            <li><a href="/урл_ссылки/">название_ссылки</a></li>
  7. </ul>


но мне нужно чтобы на она эту строку не меняла

CODE (html):
скопировать код в буфер обмена
  1. <li><a href="/">Главная</a></li>


то есть если в строке href="/" такую строку пропускают без замен...

подскажите пожалуста как это сделать Улыбка
2. AmsTaFF - 04 Декабря, 2013 - 15:02:26 - перейти к сообщению
посмотрите в сторону [^/]* - данная запись означает "все символы, кроме /"
а и ещё символ | т.е. альтернатива
Посмотрите в эту сторону
3. zilon - 04 Декабря, 2013 - 19:17:09 - перейти к сообщению
AmsTaFF, спасибо теперь главную не вырезает, вот такой код получился

PHP:
скопировать код в буфер обмена
  1. function zamenalik_category ($links)
  2.  
  3. {
  4.  
  5.         $links = preg_replace ("/(<li><a.*?href=\"[^\/\"]).*?(<\/a><\/li>)/s", "$1/урл_ссылки/\">название_ссылки$2", $links);
  6.         return $links;
  7.  
  8. }


а как | использовать? у меня не получается, можно пример...
4. Саныч - 04 Декабря, 2013 - 20:06:21 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('#(<a.+?href=")(?(?=\/")""|[^"]+)(".*?>).+?<\/a>#i', '$1/урл_ссылки/$2название_ссылки</a>', $str);
5. AmsTaFF - 05 Декабря, 2013 - 08:45:27 - перейти к сообщению
zilon пишет:
а как | использовать? у меня не получается, можно пример...

вот посмотри примерчик

 

Powered by ExBB FM 1.0 RC1