сложная регулярка для замены ссылок

Статус
В этой теме нельзя размещать новые ответы.

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
подскажите пожалуста как регулярку составить есть вот такой код

<li.*><a.*href=".*".*><.*>Ссылка из меню</.*></a>

надо его поменять на

<li.*><a.*href="Для просмотра ссылки Войди или Зарегистрируйся".*><.*>название сайта</.*></a>

то есть поменять надо только url и анкор ссылки, а все остальные атрибуты - class, id, target, <b>, <span> и другие надо сохранить...

я сложнее этого ничего не писал, подскажите пожалуста как это сделать :thenks:

PHP:
function zamenalink ($links)

{

    $links = preg_replace ('/href=\"\/?.*?">/', 'href="#">', $links);
    $links = preg_replace ("/href=\'\/?.*?'>/", "href='#'>", $links);
    $links = preg_replace ('/href=\"\/*?.html">/', 'href="#">', $links);
    $links = preg_replace ("/href=\'\/.*?.html'>/", "href='#'>", $links);

    return $links;

}
 
Последнее редактирование:
Нормальные примеры текстов, на которых необходимо тестировать регулярку дайте.
 
Нормальные примеры текстов, на которых необходимо тестировать регулярку дайте.

вот

HTML:
<li><a href="#">Главная</a></li>
<li><a href="#">Регистрация</a></li>
<li><a href="#">Контакты</a></li>
<li><a href="#">Правила</a></li>

<li class="sublnk"><a href="#"><b>Экономика</b></a>
<ul>
<li><a href="#"><b>Новости</b></a></li>
<li><a href="#"><b>Биржи</b></a></li>
<li><a href="#"><b>Котировки валют</b></a></li>
<li><a href="#"><b>Рынок</b></a></li>
</ul>
</li>

<li><a href="#"><b>Религия</b></a></li>
<li><a href="#"><b>Криминал</b></a></li>
<li><a href="#"><b>Спорт</b></a></li>
<li><a href="#"><b>Культура</b></a></li>
<li><a href="#"><b>Инопресса</b></a></li>

____________

сделал регулярку вот она

PHP:
function zamenalik_category ($links)

{

    $links = preg_replace ("/(<li><a.*?href=\").*?(<\/a><\/li>)/s", "$1/урл_ссылки/\">название_ссылки$2", $links);
    return $links;

}

меняет это на это

HTML:
<ul class="reset">
           <li><a href="/">Главная</a></li>
           <li><a href="#">Регистрация</a></li>
           <li><a href="#">Контакты</a></li>
           <li><a href="#">Правила</a></li>
</ul>

<ul class="reset">
           <li><a href="/урл_ссылки/">название_ссылки</a></li>
           <li><a href="/урл_ссылки/">название_ссылки</a></li>
           <li><a href="/урл_ссылки/">название_ссылки</a></li>
           <li><a href="/урл_ссылки/">название_ссылки</a></li>
</ul>

но вырезает слишком много, можно как не будь сделать так чтобы он не вырезала ссылки в которых есть символы {}[] и один слеш такой - / :nezn:

то есть сейцас регулярка меняет

HTML:
<li><a href="/">Главная</a></li>

на

HTML:
<li><a href="/урл_ссылки/">название_ссылки</a></li>

а нужно чтоб она этого не делала...
 
Последнее редактирование:
Код:
/(<li><a[^>]+href=")[^"{}\[\]/]*?("[^>]*>).*?(</a></li>)/i
$1/урл_ссылки/$2название_ссылки$3

Не проверял, но должно работать
 
большое спасибо, спецсимволы с кавычками зазеркалил и заработала :party:

PHP:
function zamenalik_category ($links)

{

$links = preg_replace ("/(<li><a[^>]+href=\")[^\"{}\[\]\/]*?(\"[^>]*>).*?(<\/a><\/li>)/i", "$1/урл_ссылки/$2название_ссылки$3", $links);
return $links;

}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху