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

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

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

 

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

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

тема: вырезать фразу + от нее с обеих сторон еще до заданных тегов
 
 автор: danila_dem   (19.08.2008 в 01:04)   письмо автору
 
 

помогите люди добрые.
мне нужно удалять пункт целиком, если в нем есть заданная фраза,
ну типа саму фразу и еще, все то что, находится до тегов <li> и </li> с обеих сторон, ну и их тоже к черту.

PS. а с выражениями, вообще не алё.

$trashString = "ненужная фраза";
$string = "
<ul>
/////////////////////////////////// удалить по <li
<li class="red">
<span>[url]ненужная фраза[/url]</span>
</li>
////////////////////////////////// удалить по </li>

<li class="red">
<span>фраза</span>
</li>
</ul>
";

спасибо

  Ответить  
 
 автор: dream-x   (19.08.2008 в 01:26)   письмо автору
 
   для: danila_dem   (19.08.2008 в 01:04)
 

Здравствуйте!

<?php
$trashString 
"ненужная фраза";
$string '';
$list 
"<ul> 
<li class=\"red\">
<span>[url]ненужная фраза[/url]</span>
</li>
<li class=\"red\">
<span>фраза</span>
</li>
</ul>"
;

$search 
"/<li class=\"red\"\>
<span\>\[url\](.*?)<\/span\>
<\/li\>/i"
;

$list preg_replace($search$string$list);
echo 
$list;

?>

  Ответить  
 
 автор: danila_dem   (19.08.2008 в 02:27)   письмо автору
 
   для: dream-x   (19.08.2008 в 01:26)
 

я прошу прощения наверное плохо растолковал что мне нужно,
дело в том что данные в переменной со списками могут быть разные(разные стили, ссылки и пр. class="red" это я на шару, для примера) поэтому мне нужно как то перемещаться, что ли по строке от "ненужной фразы" до тега <li назад, и от "ненужной фразы" до тега </li> вперед.

вот еще пример как я вижу примерно.
<? php
$string 
"<ul><li><span>unnecessary phrase</span></li><li>phrase</li><ul>"//эта переменная генерится хрензнаетгде и может быть разная.

$start "unnecessary phrase"
$toBackStop "<li";
$toForvardStop "</li>";
$pattern  "??$toBackStop????????????$start????????????$toForvardStop??";
$out  preg_replace($pattern""$string);
print  = 
$out;
//result : <ul><li>phrase</li><ul> ?>


спасибо большое за внимание.

  Ответить  
 
 автор: xx77   (19.08.2008 в 18:38)   письмо автору
 
   для: danila_dem   (19.08.2008 в 02:27)
 

<pre><?

$start 
"unnecessary phrase";
$string 'Если не использовать $toBackStop, $toForvardStop
и предпологать что в строке $start не содержится спец.символов или они заэкранированы например при помощи preg_quote() 
<ul><li><span>unnecessary phrase</span></li>
<li>necessary phrase</li>
<li>phrase</li><ul>'
;
# можно было.бы попробовать примерно так:
$pattern  '#<li(?:(?!</li>|' $start ').)*' $start '(?:(?!</li>).[^<]*)*</li>#s'
$out  preg_replace($pattern""$string); 
print  
htmlspecialchars($out); 
# или
?><hr/><?

$pattern  
'#<li(?:(?!</li>).)*?' $start '(?:(?!</li>).[^<]*)*</li>#s'
$out  preg_replace($pattern""$string); 
print  
htmlspecialchars($out); 
# или
?><hr/><?

$pattern  
'#<li[^>]*>(?:(?!</li>).)*?' $start '.*?</li>#s'
$out  preg_replace($pattern""$string); 
print  
htmlspecialchars($out); 

?></pre>
но в любом случае , получатся медленные выражения

  Ответить  
 
 автор: danila_dem   (20.08.2008 в 15:23)   письмо автору
 
   для: xx77   (19.08.2008 в 18:38)
 

спасибо, все работает
только я не понял что значит медленные, точнее насколько медленные, меня на хосте не забанят, если на странице 20 таких обрезаний сделать?

  Ответить  
 
 автор: xx77   (20.08.2008 в 22:04)   письмо автору
 
   для: danila_dem   (20.08.2008 в 15:23)
 

Думаю не забанят , или забанят но не за это .)

"медленные" это я так про то что постарался-бы не применять такие долго-работающие выражения например в скрипте который был-бы постоянно-работающим на страницах сайта .
Если только для однократных применений , например просто для правки статических или подобных таковым файлов.
Может немного передёргиваю, но для меня генерация за 0,09 секунды обычной страницы сайта кажется слишком медленной , если только это не страница которую сам разработчик разработал для одного себя .)
А так за мной никакого совсем опыта работы с большими обьёмами данных , например работы с таблицами базы данных объёмом как на этом форуме, иногда только сграбливаю почитать учебники или справочники функций :) для личной коллекции и общего развития лично меня

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

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