Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рег. выражения. Исключение
 
 автор: bdsoft   (09.05.2007 в 08:16)   письмо автору
 
 

Мне нужно заменить в тексте слова, но не замень слово если оно между тегами <a...</a>

Знает ктонибуть как сделать такое?

   
 
 автор: cheops   (09.05.2007 в 14:07)   письмо автору
 
   для: bdsoft   (09.05.2007 в 08:16)
 

Слово целиком расположено между тэгами <a> и </a> или входит в состав фразы?

   
 
 автор: bdsoft   (09.05.2007 в 18:10)   письмо автору
 
   для: cheops   (09.05.2007 в 14:07)
 

Между тегами <a и </a> могут быть любые слова, нужно заменять слово $repl на $replon, но незаменять слова между тегами <a и </a>.

Я пытаюсь сделать так:

echo preg_replace('/[^<a href=.*>] '.$repl.' [^<\/a>]/is', $replon, $text);


Слово может целиком быть и может частью фразы

   
 
 автор: Sfinks   (09.05.2007 в 20:57)   письмо автору
 
   для: 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;

?>

   
 
 автор: bdsoft   (09.05.2007 в 21:08)   письмо автору
 
   для: Sfinks   (09.05.2007 в 20:57)
 

Спасибо, помогло

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования