Я разбираю какой-то грязный HTML-код с PHP, в котором есть некоторые избыточные
теги, и я хотел бы немного их очистить. Например:
<br> <br /><br /> <br>
Как бы я заменил что-то подобное с помощью preg_replace () ?:
<br /><br />
Новые строки, пробелы и различия между <br>
<br/>
и <br />
все должны быть учтены.
Изменить: В основном я хотел бы заменить каждый экземпляр трех или более последовательных перерывов двумя буквами.
Вот что вы можете использовать. Первая строка встречается всякий раз, когда есть два или более тега (с пробелами между ними и разными типами) и заменяйте их на корректную <br /><br />
.
Я также включил вторую строку, чтобы очистить остальные теги, если вы тоже этого хотите.
function clean($txt) { $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*){2,}}i", "<br /><br />", $txt); $txt=preg_replace("{(<br[\\s]*(>|\/>)\s*)}i", "<br />", $txt); return $txt; }
Это должно работать, используя минимальный спецификатор:
preg_replace('/(<br[\s]?[\/]?>[\s]*){3,}/', '<br /><br />', $multibreaks);
Должно совпадать с ужасающими <br><br /><br/><br>
конструкциями.
это заменит все перерывы … даже если они находятся в верхнем регистре:
preg_replace('/<br[^>]*>/i', '', $string);
Попробуйте:
preg_replace('/<br\s*\/?>/', '', $inputString);
Используйте str_replace, это намного лучше для простой замены, и вы также можете передать массив вместо одного значения поиска.
$newcode = str_replace("<br>", "", $messycode);