|
|
|
| Добрый вечер. у меня задача появилась, нужно на языке PHP с использованием регулярных выражений сделать следующее. Предположим <a title="" href="" target=""></a>. Нужно ссылку взять в тег например <b><a title="" href="" target=""></a></b>, но только в том случае если внутри нет localhost. т.е. ссылка внешняя. Спасибо. | |
|
|
|
|
|
|
|
для: igsavenko
(25.04.2011 в 16:23)
| | Можно начать отталкиваться от следующего скрипта
<?php
$text = 'Добрый вечер. у меня задача появилась, нужно на языке PHP '.
'с использованием регулярных выражений сделать следующее. '.
'Предположим <a title="" href="http://localhost/" target="">ссылка</a>.'.
'Нужно ссылку взять в тег например '.
'<b><a title="" href="http://softtime.ru" target="">ссылка</a></b>, '.
'но только в том случае если внутри нет localhost. т.е. ссылка внешняя. Спасибо.';
$pattern = "|(<a[^>]+href=\")([^\"]+)(\"[^>]+>.*?</a>)|is";
echo preg_replace_callback($pattern, "replace", $text);
function replace($match)
{
if(preg_match("|localhost|i", $match[2]))
// Локальный хост - возвращаем ссылку без изменений
return $match[1].$match[2].$match[3];
else
// Внешний хост - возвращаем жирную ссылку
return "<b>".$match[1].$match[2].$match[3]."</b>";
}
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(25.04.2011 в 16:56)
| | спасибо, буду пробывать, а не подскажете как просто вытащить весь тег <a ВСЕ ЧТО УГОДНО> ВСЕ ЧТО УГОДНО</a>. я написал вот такое ' но почему то не работает.
Помоему нашел проблему а как вызвать в preg_match_callback функцию которая находится в одном классе и она private. $this->functionMy не работает :( | |
|
|
|
|
|
|
|
для: igsavenko
(25.04.2011 в 17:32)
| | >'/\<a(.*?)\<\/a\>/i
Попробуйте такое регулярное выражение
PS Отлаживать регулярные выражения лучше вне больших систем - это не самая простая вещь, и лучше исключить ошибки других систем вроде классов, чтобы полностью сосредоточиться на составлении подходящего выражения. | |
|
|
|