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

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

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

 

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

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

тема: Исключение
 
 автор: Alph[p]a   (24.11.2010 в 10:00)   письмо автору
 
 

$text='здесь текст и теги <a href=#>link</a> и другие <b>bold</b> теги';

Как найти текст без тегов ?
чтобы осталось

здесь текст и теги link и другие bold теги

  Ответить  
 
 автор: Alph[p]a   (24.11.2010 в 10:55)   письмо автору
 
   для: Alph[p]a   (24.11.2010 в 10:00)
 

нид хелп

  Ответить  
 
 автор: Slo_Nik   (24.11.2010 в 11:07)   письмо автору
 
   для: Alph[p]a   (24.11.2010 в 10:00)
 

Вполне можно обойтись без регулярных выражений, смотрите в руководстве пользователя, строковые функции, работа с html-кодом.

  Ответить  
 
 автор: Alph[p]a   (24.11.2010 в 11:36)   письмо автору
 
   для: Slo_Nik   (24.11.2010 в 11:07)
 

конечно можно написав еще кучу кода. как можно обойтись без писанины вида str_replace

  Ответить  
 
 автор: ddhvvn   (24.11.2010 в 12:29)   письмо автору
 
   для: Alph[p]a   (24.11.2010 в 11:36)
 

strip_tags

  Ответить  
 
 автор: Alph[p]a   (24.11.2010 в 13:11)   письмо автору
 
   для: ddhvvn   (24.11.2010 в 12:29)
 

я сказочный идиот! СПАСИБО!

  Ответить  
 
 автор: kosta_in_net   (26.11.2010 в 06:44)   письмо автору
 
   для: Alph[p]a   (24.11.2010 в 13:11)
 

Ради смеха сделал скрипт:

<?
$i
=0;
$data=file_get_contents('file.html');
$time_start microtime(true);

while(
$i<100){
    
$i++;
    
$data2=preg_replace("/<[\/\!]*?[^<>]*?>/si","",$data);
//    $data2=strip_tags($data);
//    $data2=ereg_replace("<[\/\!]*[^<>]*>","",$data);
}
$time_end microtime(true);
$time $time_end $time_start;
echo 
'<p>'.$time.'</p>';
echo 
$data2;
?>

И пусканул его несколько раз, комментируя одни и разкомментируя другие строки, проверив, таким образом и strip_tags, и preg_replace, и ereg_replace.

Проверял на относительно большом и кривоватом HTML-коде. Вот результаты времени выполнения:

0.0312588214874 для strip_tags
0.0693130493164 для preg_replace
4.08115887642 для ereg_replace

Потом взял обезтеженный текст, сохранил в файл и протестил на нем. Получил такие результаты:

0.00200915336609 для preg_replace
0.00807499885559 для strip_tags
0.0092921257019 для ereg_replace

В обоих случаях наличие или отсутствие квантификатора i (регистронезависимый поиск) для preg_replace заметного влияния на скорость не оказал.

Выходит, что если наличие искомого в тексте весьма вероятно, strip_tags вдвое эффективней preg_replace, но если в тексте нет искомого, preg_replace вчетверо эффективней strip_tags.

Отсюда вывод: применение strip_tags или preg_replace хорошо применять в зависимости от ожидаемой вероятности появления искомого кода. А ereg_replace вообще лучше не применять.
Ну а поскольку очень часто вырезать приходится не только теги, про strip_tags вообще забываешь. Так что, как писал Slo_Nik: "Вполне можно обойтись без регулярных выражений", но лучше привыкать к ним :)

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

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