Удаление символов в конец текста

LONGMAN

Dark Side of the Moon..
Удаление символов в конец текста

Имеется большая база новостних статьи. У пачти каждой статьи в конец текста идёт html коды типа <br/> <br /> или </p>. Их может быть и больше одного и с пробеламы между ними. (Да, да, эти статьи писали польные идиоты :)). Как мне удалить все последные html переносы из текста? То ест все html коды после которго не идёт никакой текст
 

LONGMAN

Dark Side of the Moon..
Спасибо большое. А средствамы php можно это сделать? На пример регуляркой
 

LONGMAN

Dark Side of the Moon..
Автор оригинала: Mr_Max
-~{}~ 04.09.09 19:27:

Только вот зачем делать средствами php то, с чем с легкостью справится БД.
Потаму что к сожалению не все скрипты используют БД для хранения информации.

-~{}~ 06.09.09 01:56:

Вот пример
PHP:
$text = 'text текст text<br/><br/>text 1986-04-07 <br/>    <br/><br/>

 <br/>'; //Текст из корого нужно удалить все последные <br/>
$text = preg_replace('#<br/>*(\s|\n|\d|<br/>)+#', '', $text);
echo htmlspecialchars($text); // Выводит "text текст texttext 1986-04-07" т.е. удаляет все <br/> :(
-~{}~ 06.09.09 01:56:

Вот пример
PHP:
$text = 'text текст text<br/><br/>text 1986-04-07 <br/>    <br/><br/>

 <br/>'; //Текст из корого нужно удалить все последные <br/>
$text = preg_replace('#<br/>*(\s|\n|\d|<br/>)+#', '', $text);
echo htmlspecialchars($text); // Выводит "text текст texttext 1986-04-07" т.е. удаляет все <br/> :(
-~{}~ 06.09.09 01:57:

Опс, смайлы в тегах не рисуются..
 

nexen

Новичок
<?php
$dat=file('dat.txt');
foreach($dat as $v){
$txt.=$v;
}
$txt=preg_replace('/ *< *[\w]+ *[\/]?>/','',$txt);
echo $txt;
php?>

можно эту же задачу решить так preg_replace('/([\d\w])* *< *[\w]+ *[\/]?>/','\1',$txt); все зависит от целей

p.s.
вроде предусмотрел все варианты, но если что то не получится - пиши,помогу, меня не будет - народ поможет.
 

FractalizeR

Новичок
Автор оригинала: Mr_Max
-~{}~ 04.09.09 19:27:

Только вот зачем делать средствами php то, с чем с легкостью справится БД.
Зачем делать средствами БД то, с чем с легкостью справится PHP? :) Очищать текст нужно скриптом. Хотя бы потому, что возможности MySQL в обработке текстов ограничены и неэффективны. При усложении логики очистки текста, часть этой логики все равно придется в скрипт выносить. Лучше уж сразу.
 

LONGMAN

Dark Side of the Moon..
Автор оригинала: nexen
<?php
$dat=file('dat.txt');
foreach($dat as $v){
$txt.=$v;
}
$txt=preg_replace('/ *< *[\w]+ *[\/]?>/','',$txt);
echo $txt;
php?>

можно эту же задачу решить так preg_replace('/([\d\w])* *< *[\w]+ *[\/]?>/','\1',$txt); все зависит от целей

p.s.
вроде предусмотрел все варианты, но если что то не получится - пиши,помогу, меня не будет - народ поможет.
К сожалению не одна ваша регулярка не даёт нужного результата. А именно, в тексте удаляает все <br/> а не только последные
 

nexen

Новичок
- я невнимательно прочел, вот это тебя спасет! )
PHP:
preg_replace('/( *<[\w\d]+ *[\/]?>)$/i','',$txt);
пожалуй от так вот даже - если только последние br

preg_replace('/( *<br *[\/]?>)$/i','',$txt);

за последними символами > без пробела
 

Viktor_Rez

Новичок
У 95% статей в конце всегда стоит точка. После точки выпиливаем всё что можно.
 

dimagolov

Новичок
Viktor_Rez, не факт. после могут быть закрывающие теги форматирования, которые стоит все же оставить.
 

Viktor_Rez

Новичок
dimagolov Cut после точки, Paste до точки с выпиливанием <br />,<br> ну и чего автор сам пожелает. =)
 

LONGMAN

Dark Side of the Moon..
Viktor_Rez
А если в конец точки не будет? :) Не знаю как они писали эти статьи, но точки в конец может и не быть. Мне нужно вырезать <br/> после которого до конца статьи не встречаются слова длиннее 1 буквы
 
Сверху