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

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

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

 

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

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

тема: Замена слов в тексте нетрогая тэги
 
 автор: fly2p   (03.07.2009 в 23:50)   письмо автору
 
 

Как сделать что бы слова заменялись во всем тексте не заменяя нечего внутри тэгов?

  Ответить  
 
 автор: Rolex   (04.07.2009 в 00:31)   письмо автору
 
   для: fly2p   (03.07.2009 в 23:50)
 

А можно поподробнее. А так мало что понятно.

  Ответить  
 
 автор: fly2p   (04.07.2009 в 00:53)   письмо автору
 
   для: Rolex   (04.07.2009 в 00:31)
 

Например надо заменить слов text238 в таком тексте:
раз text238 два три <a href="http://text238.ru" title="the text238"> и <b>text238</b> i t.d.
Что бы это слово менялось только в тексте, а тут <a href="http://text238.ru" title="the text238"> нечего не заменяло, теги могут быть различные img и т.д.

  Ответить  
 
 автор: Trianon   (04.07.2009 в 01:35)   письмо автору
 
   для: fly2p   (04.07.2009 в 00:53)
 

$pattern = '/(?![^<>]*[>])text238/ms';

  Ответить  
 
 автор: fly2p   (04.07.2009 в 19:29)   письмо автору
 
   для: Trianon   (04.07.2009 в 01:35)
 

Спасибо! А как то можно еще сделать что бы не заменяло еще в неактивных ссылка?
Например:
раз text238 два три <a href="http://text238.ru" title="the text238"> и <b>text238</b> i t.d. http://text238.com/1.html qwerty
Не трогая то что внутри тегов и между http:// *.html

  Ответить  
 
 автор: ??????   (04.07.2009 в 23:34)
 
   для: fly2p   (04.07.2009 в 19:29)
 

(?<!http://) перед словом в шаблоне

  Ответить  
 
 автор: ??????   (04.07.2009 в 23:32)
 
   для: Trianon   (04.07.2009 в 01:35)
 

такой вариант ещё
$pattern = '#text238(?(?=[^<>]*>)(?!))#';

побыстрее вроде должно быть

  Ответить  
 
 автор: Trianon   (05.07.2009 в 00:19)   письмо автору
 
   для: ??????   (04.07.2009 в 23:32)
 

полагаю, автору китайская грамота что первое, что второе, что третье.

  Ответить  
 
 автор: fly2p   (05.07.2009 в 01:00)   письмо автору
 
   для: Trianon   (04.07.2009 в 01:35)
 

Все работает. Только если в ссылке будут еще папки, тогда они все равно заменяться будут. Немного не правильно указал пример.
<?php
$text
="раз text238 два три <a href=\"http://text238.ru\" title=\"the text238\"> и</a> <b>text238</b> i t.d. http://text238.com/text238/isne.html";
$pattern '#(?<!http://)text238(?(?=[^<>]*>)(?!))#'
$text preg_replace ($pattern'text329'$text);
echo 
$text;
?>

Результат:
раз text329 два три <a href="http://text238.ru" title="the text238"> и</a> <b>text329</b> i t.d. http://text238.com/text329(заменилось)/isne.html
Как-то можно указать, что бы от такого то до такого то символа не производилась замена (при любом количестве папок)?

  Ответить  
 
 автор: Trianon   (05.07.2009 в 01:47)   письмо автору
 
   для: fly2p   (05.07.2009 в 01:00)
 

папка - это что за шняга такая?
Вопрос, впрочем, риторический.

  Ответить  
 
 автор: fly2p   (05.07.2009 в 01:57)   письмо автору
 
   для: Trianon   (05.07.2009 в 01:47)
 

Хоть вопрос и риторический...
http://text238.com/папка1/папка2/.../папкаN/file.html

  Ответить  
 
 автор: Trianon   (05.07.2009 в 01:59)   письмо автору
 
   для: fly2p   (05.07.2009 в 01:57)
 

Это называется каталог

  Ответить  
 
 автор: fly2p   (05.07.2009 в 02:02)   письмо автору
 
   для: Trianon   (05.07.2009 в 01:59)
 

Еще это можно назвать директория, но по-моему это к теме не относится.
Хотелось бы услышать, что то по существу.

  Ответить  
 
 автор: ??????   (05.07.2009 в 23:07)
 
   для: fly2p   (05.07.2009 в 02:02)
 

например такое будет ещё медленнее
<?
$pattern 
'#(http://[^\s"\'>]+)|text238(?![^<>]*>)#e';

echo  
preg_replace ($pattern'((\'$1\'!="")?\'$1\':\'text329\')'$text); 

  Ответить  
 
 автор: fly2p   (06.07.2009 в 01:47)   письмо автору
 
   для: ??????   (05.07.2009 в 23:07)
 

Спасибо большое!

  Ответить  
 
 автор: kostyar   (27.07.2009 в 16:18)   письмо автору
 
   для: fly2p   (06.07.2009 в 01:47)
 

Здравствуйте. Столкнулся с похожей проблемой.

Мне нужно чтобы слова заменялись везде кроме конкретных атрибутов, например src, href.

Не подскажете как это реализовать регулярным выражением?


Заранее спасибо!!!

  Ответить  
 
 автор: ntro123   (04.08.2009 в 15:03)   письмо автору
 
   для: fly2p   (03.07.2009 в 23:50)
 

можешь юзать include

<p><? include"silka.txt"; ?></p>
а в silka.txt тупо текст ссылки ...и так ко всем страницам ... делаешь 1 раз поможет на всю жизинь чтобы tyt лазить и вручную не заменять

  Ответить  
Rambler's Top100
вверх

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