Небольшое рег. выражение

12
Dweep
На сайте с 11.12.2006
Offline
207
#11

Еле осилил. Это то что Вы искали ?

function addA($nolink, $text) {

$res = $text."<a";

do {

$res = preg_replace('#('.$nolink.')(((?!</a>).)*)<a#isU', "<a href=\"http://site.ru\">".$nolink."</a>$2<a", $res);

} while ($text!=$res|$text=$res);

$res = preg_replace('#<a$#', '', $res);

return $res;

}

echo addA("это не ссылка", '"<a href="http://site.ru">это не ссылка</a> это не ссылка <b>это не ссылка<b> это не ссылка <a href="http://site.ru"><i>это не ссылка</i></a>');

S
На сайте с 28.10.2005
Offline
296
#12
Shadow:
есть строка: <a href="http://site.ru">это ссылка</a> это не ссылка
каким выражением можно найти текст, что НЕ является ссылкой (не находится в тегах <a bla-bla> </a>)?
то, что является ссылкой ищется отлично, а вот наоборот не получается

Удалите предварительно ссылки с анкорами и не парьтесь :D

[Удален]
#13
Shadow:
пример строк:
$string = '<a href="http://site.ru">это ссылка</a> это не ссылка';
$string = '<a href="http://site.ru">это ссылка</a> это не ссылка ';

ИМХО, проще обрезать по ссылке:

$string = explode("</a>", $string);

$string = $string[1];
а затем даже не регуляркой, а обычным stristr()...

Если ссылок в тексте несколько, обработать так же в цикле foreach по нечетным значениям счетчика.

dvaes
На сайте с 03.09.2007
Offline
65
#14

с пробелами будет беда. так текст <a href="http://site.ru">это ссылка</a> <a href="http://site.ru">это ссылка</a> будет преобразовывать пробел между ними в ссылку. но все таки дам вам пищу для размышлений с исправленным и можноподогнатным вариантом)


<?php
$text = " test link <a href='1'>1</a> test link <a href='2'>2</a> <a href='3'>3</a> <a href='4'>4</a> test link ";
$text=preg_replace("'(<a[^>]*>[^<]+</a>)?([^<]+)'sie", "'\\1'.(trim('\\2')=='' ? '\\2' : ' <a href=\"test.ru\">'.trim('\\2').'</a> ')", $text);

echo $text;
?>
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий