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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: регулярка для замены ссылок

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
zilon
Отправлено: 04 Декабря, 2013 - 14:23:59
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




вот такую регулярку составил, она меняет

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="/" такую строку пропускают без замен...

подскажите пожалуста как это сделать Улыбка
 
 Top
AmsTaFF
Отправлено: 04 Декабря, 2013 - 15:02:26
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


Помог: 1 раз(а)




посмотрите в сторону [^/]* - данная запись означает "все символы, кроме /"
а и ещё символ | т.е. альтернатива
Посмотрите в эту сторону

(Отредактировано автором: 04 Декабря, 2013 - 15:03:39)

 
 Top
zilon
Отправлено: 04 Декабря, 2013 - 19:17:09
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




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. }


а как | использовать? у меня не получается, можно пример...
 
 Top
Саныч
Отправлено: 04 Декабря, 2013 - 20:06:21
Post Id



Участник


Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010  
Откуда: Украина, Запорожье


Помог: 62 раз(а)




PHP:
скопировать код в буфер обмена
  1. $str = preg_replace('#(<a.+?href=")(?(?=\/")""|[^"]+)(".*?>).+?<\/a>#i', '$1/урл_ссылки/$2название_ссылки</a>', $str);


-----
Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
 
 Top
AmsTaFF
Отправлено: 05 Декабря, 2013 - 08:45:27
Post Id


Гость


Покинул форум
Сообщений всего: 84
Дата рег-ции: Июнь 2013  
Откуда: Россия, Москва


Помог: 1 раз(а)




zilon пишет:
а как | использовать? у меня не получается, можно пример...

вот посмотри примерчик
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB