Как удалить html-теги из файла

espada

Guest
Как удалить html-теги из файла

При переделке старого html-сайта в новый на php возникла необходимость загонять в базу тексты, удаляя из них все html-теги. Попытка сделать это с помощью ereg_replace("<(.*)>","",$text); приводит к удалению всего, что заключено между <html> и </html>.

Вопрос: как удалить html-теги, сохранив в целости текст?
 

espada

Guest
Спасибо.

Но расширю вопрос. А как удалить все что есть между конкретным <тегом> и </тегом>, сохранив все остальное, если в файле сочетание <тег>текст</тег> встречается неоднократно?
 

Alexos

Новичок
пожалуй реги тут не нужны..
обрати внимание на 2-ой аргумент функции strip_tags( ), а именно "allowable_tags"
 

SiMM

Новичок
Alexos, по моему, не совсем то - это всего лишь позволяет не удалять некоторые тэги - при этом текст, заключённый между тэгами, всё равно остаётся.
espada, в твоём первом рэге была логическая ошибка - ты не указал жадность квантификатора. И вообще лучше забыть о ereg-функциях. Твой вариант должен быть примерно таким preg_replace('/<.*?>/si','',$text);
По второй задаче - что-то вроде preg_replace('/<тег>.*?</тег>/si','',$text); Количество этих тэгов можно посчитать по preg_match_all
 

visor

Guest
а ds пробовали strip_tags убирать <script ...>code</script>?
не работает. вернее сам тэг убирается, а текст внутри него остается. оно конечно верно с точки зрения логики htm файла, но результат-то неверный.
так что если зараннее неизвестно, есть ли в коде странички javascript, то луше использовать конструкцию вроде
$result = strip_tags($text, "<script>");
$result = preg_replace("/<script[^>]*>[^<]*<\/script[^>]*>/i", "", $result);
 

SiMM

Новичок
visor, по моему, вы неправы в том, что забываете указывать жадность квантификаторов - если тэгов <script> и </script> будет несколько - будет удалён весь текст между первым и последним скриптом, а он может присутствовать ещё между скриптами. Да и модификатор s помоему далеко не лишний (если конечно в $text содержатся переводы строки).
 
Сверху