|
|
|
| Мне нужно заменить в тексте слова, но не замень слово если оно между тегами <a...</a>
Знает ктонибуть как сделать такое? | |
|
|
|
|
|
|
|
для: bdsoft
(09.05.2007 в 08:16)
| | Слово целиком расположено между тэгами <a> и </a> или входит в состав фразы? | |
|
|
|
|
|
|
|
для: cheops
(09.05.2007 в 14:07)
| | Между тегами <a и </a> могут быть любые слова, нужно заменять слово $repl на $replon, но незаменять слова между тегами <a и </a>.
Я пытаюсь сделать так:
echo preg_replace('/[^<a href=.*>] '.$repl.' [^<\/a>]/is', $replon, $text);
|
Слово может целиком быть и может частью фразы | |
|
|
|
|
|
|
|
для: bdsoft
(09.05.2007 в 18:10)
| | Как заменить везде КРОМЕ как в ссылках, я не знаю, но решить эту задачу можно в обратном порядке - заменить везде, а потом внутри ссылок заменить обратно.
<?php
$s = "тут слово заменяем <a href=www.domain.ru>тут слово не заменяем</a> тут слово заменяем <a href=www.domain.ru>тут слово не заменяем</a> тут слово заменяем";
$repl = "слово";
$replon = "словечко";
$s = str_replace($repl,$replon,$s);
$s = preg_replace_callback("#(<a href=[^>]*>)(.*?)</a>#i","replace_back",$s);
function replace_back($matches){
GLOBAL $repl,$replon;
return $matches[1].str_replace($replon,$repl,$matches[2])."</a>";
}
echo $s;
?>
|
| |
|
|
|
|
|
|
|
для: Sfinks
(09.05.2007 в 20:57)
| | Спасибо, помогло | |
|
|
|