регулярка для ссылок

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

zilon

Постоялец
Регистрация
30 Июл 2011
Сообщения
370
Реакции
146
нужно чтобы регулярка заменяла такие ссылки

HTML:
<a href="/bezopasnost-pk/">Безопасность ПК</a>
<a href="/razrabotchiki/">Разработчики</a>
<a href="/opera-next/">Опера Next</a>
<a href="/opera-dragonfly/">Opera Dragonfly</a>
<a href="/zapis-diskov/">Запись дисков</a>
<a href="/opera-software/">Opera Software</a>
<a href="/utility-sistema/">Утилиты и система</a>
<a href="/portable-soft/">Portable soft</a>

на такие

HTML:
<a href="/урл-ссылки/">анкор ссылки</a>

вот такая регулярка почему то ничего не меняет

PHP:
function z_cat ($links)

{

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

return $links;

}

ещё нужно чтобы главная не менялась то есть с одним слешем ссылка не должна меняться. Помогите пжалуста составить регулярку :thenks:
 
ссылка
Код:
(?<==")/.*?/(?=")
анкор
Код:
(?<=>).*?(?=<)
 
что то у меня не получается, а как сделать чтоб менялись ссылки такие

HTML:
<a href="/video/"><span>Главная</span></a>
<a href="/onlajn-radio/"><b>Онлайн радио</b></a>
<a href="/onlajnpogoda/">Онлайн погода</a>

на такие

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

и не менялись ссылки в которых есть символы #tabln1#tabln2[]{} и один слеш - /


вот регулярка, но она не меняет ссылки в которые есть - и span, пробовал так прописывать но не работает (<b|span>)

PHP:
function z_cate ($links)

{

  $links = preg_replace ("/(<a[^>]+href=\")[^\"{}\[\]#tabln1#tabln2][a-zA-z0-9\/]{2,}?(\"[^>]*>)(<b>).*?(<\/b>)(<\/a>)/i", "$1/урл_ссылки/$2$3название_ссылки$4$5", $links);
  $links = preg_replace ("/(<a[^>]+href=\")[^\"{}\[\]#tabln1#tabln2][a-zA-z0-9\/]{2,}?(\"[^>]*>).*?(<\/a>)/i", "$1/урл_ссылки/$2название_ссылки$3", $links);

  return $links;

}
 
Самый простой вариант - берём ссылку - отдельно url, отдельно текст
далее в тексте убираем все тэги, меняем текст на нужный и делаем замену в ссылке.
PHP:
$link = '<a href="/old_url/"><span>old text</span></a>';
$new_url = '/url_new/';
$new_text = 'NEW TEXT';
$link = preg_replace('/href="([^"]+)"/', 'href="'.$new_url.'"', $link);
preg_match('/<a[^>]+>(.+?)<\/a>/i', $link, $text);

$new_link = str_replace( strip_tags($text[1]), $new_text, $text[0] );
 
Код:
preg_replace('~<a href="(.*?)">(.*?)</a>~is', '<a href="/урл-ссылки/">$2</a>', $link);
 
Если кому пригодиться вот еще мой велосипед.

PHP:
$retval = preg_match_all('#<a\s(?:[^\s>]*?\s)*?href="(.*?)"\s?(?:id="(.*?)")?\s(?:title="(.*?)")?.*?>(.+?)</a>#esi', $content, $matches);

достает ссылки вида

<a href="Для просмотра ссылки Войди или Зарегистрируйся" id="a1" title="бла бла бла" >text text text</a>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху