|
|
|
| Добрый день. Пожалуйста, помогите составить регулярное выражение, с помощью которого можно будет очистить переменную, которая содержит HTML код. Под словом очистить имеется введу: убрать все переходы на новую строку (\n) - сделать весь HTML код в одну строку; убрать все лишние пробелы между двумя разными тегами.
Необходимо учесть, что мой HTML может заканчиваться следующим образом:
Следовательно, нужно смотреть что если мы уже в последнем теге, при чём он не закрывается, а после него нет текста, то убираем пробелы.
Вот то что у меня получилось сделать, но нужно это как можно сильнее упростить, помогите:
function MyFunction( &$iData )
{
$iData = str_replace( array( "\n","\t","\0","\r" ),'',$iData );
$iData = preg_replace( "/>( )+/",'>',$iData );
$iData = preg_replace( "/( )+</",'<',$iData );
}
|
Данную вещь нужно организовать на PHP. Заранее спасибо | |
|
|
|
|
|
|
|
для: pavluxa09
(27.01.2011 в 00:47)
| | Что не устраивает в текущем решении? Я, разве что, вместо использовал бы . | |
|
|
|
|
|
|
|
для: SHAman
(27.01.2011 в 10:04)
| | Отлично. То что нужно, спасибо! В результате мы имеем функцию:
function Clear( &$iData ) {
$iData = str_replace( array( "\n","\t","\0","\r" ),'',$iData );
$iData = preg_replace( "/>\s+/",'>',$iData );
$iData = preg_replace( "/\s+</",'<',$iData );
}
|
При помощи которой мы можем весь HTML код преобразовать в одну строку и убрать все лишние пробелы! | |
|
|
|
|
|
|
|
для: pavluxa09
(27.01.2011 в 10:49)
| | Зачем писать целую функцию, когда можно так:
<?
preg_replace("/((?<=>)|(?<=--)|(?<=.))[\s\n\r\t]+((?=--)|(?=<))/U",'',$iData);
?>
|
Эта регулярка неочевидна, но правильная.
Условие (?<=--) включил на всякий случай. Бывает, попадается в коде что-то вроде:
Правильнее было бы использовать в конце регулярки модификатор g, но некторые сборки PHP с ним не дружат. | |
|
|
|