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

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

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

 

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

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

тема: замена тектового блока со спец символами
 
 автор: sidPR   (05.02.2008 в 17:45)   письмо автору
 
 

[ пошел | ушлепал ]


$out_bracket = "[ пошел | ушлепал ]";
$b['word'] = "111";
$txt = preg_replace("#".$out_bracket."#is",$b['word'],$full_text);


как это грамотно сделать надо заменить весь блок .. на то что мне надо ( Блоки могу встречатся много раз) .

   
 
 автор: kasmanaft   (05.02.2008 в 17:56)   письмо автору
 
   для: sidPR   (05.02.2008 в 17:45)
 

А почему не str_replace() ?

Не работает из-за спец-символов "[ ] |". Их надо экранировать с помощью, например, preg_quote().

   
 
 автор: sidPR   (05.02.2008 в 18:01)   письмо автору
 
   для: kasmanaft   (05.02.2008 в 17:56)
 

Непомагает preg_quote()

   
 
 автор: kasmanaft   (05.02.2008 в 18:07)   письмо автору
 
   для: sidPR   (05.02.2008 в 18:01)
 

А как используете?
<?php
$out_bracket 
"[ пошел | ушлепал ]";
$b['word'] = "111";
$full_text "лалала [ пошел | ушлепал ] лалала [ пошел | ушлепал ] лалала";
echo 
$txt preg_replace("#".preg_quote($out_bracket)."#is",$b['word'],$full_text);
?>

   
 
 автор: sidPR   (05.02.2008 в 18:18)   письмо автору
 
   для: kasmanaft   (05.02.2008 в 18:07)
 

да некоторые заменяет некоторые оставляет ... :(

   
 
 автор: sidPR   (05.02.2008 в 18:25)   письмо автору
 
   для: sidPR   (05.02.2008 в 18:18)
 

    $txt = str_replace("".$out_bracket[0][$n]."",$b['word'],$full_text);


Тоже не помагает ... :( не все строки обрабатывает

   
 
 автор: sidPR   (05.02.2008 в 18:27)   письмо автору
 
   для: sidPR   (05.02.2008 в 18:25)
 

сори все нормально .. обшика в алгоритме была .. изза этого изменялось только последние блоки!

   
 
 автор: sidPR   (06.02.2008 в 13:41)   письмо автору
 
   для: sidPR   (05.02.2008 в 18:27)
 

подскажите пожалуйста почему preg_match_all("/\[(.+?)\]/", $full_text, $out_bracket);

если в $full_text содержится текст с ковычками на выдаче $out_bracket экранирует автоматом их ? как этого избежать ?

   
 
 автор: sidPR   (06.02.2008 в 14:01)   письмо автору
 
   для: sidPR   (06.02.2008 в 13:41)
 

stripslashes() помогло но я не уверен что это правильный выход ?

   
 
 автор: kasmanaft   (06.02.2008 в 14:04)   письмо автору
 
   для: sidPR   (06.02.2008 в 14:01)
 

Обычно кавычки экранируются, если добавлять модификатор "e". А так - ни разу не сталкивался..

   
Rambler's Top100
вверх

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