У меня возникли проблемы с разработкой, как это сделать, у меня строка выглядит примерно так …
$text = "<p>This is some example text This is some example text This is some example text</p> <p><em>This is some example text This is some example text This is some example text</em></p> <p>This is some example text This is some example text This is some example text</p>";
Я в основном хочу использовать что-то вроде preg_repalce и regex для удаления
<em>This is some example text This is some example text This is some example text</em>
Поэтому мне нужно написать некоторый PHP-код, который будет искать открытие <em>
и закрытие </em>
и удалить весь текст между ними
надеюсь кто-то может помочь, спасибо.
В случае, если вы заинтересованы в решении без регулярного выражения, следующее:
<?php $text = "<p>This is some example text This is some example text This is some example text</p> <p><em>This is some example text This is some example text This is some example text</em></p> <p>This is some example text This is some example text This is some example text</p>"; $emStartPos = strpos($text,"<em>"); $emEndPos = strpos($text,"</em>"); if ($emStartPos && $emEndPos) { $emEndPos += 5; //remove <em> tag aswell $len = $emEndPos - $emStartPos; $text = substr_replace($text, '', $emStartPos, $len); } ?>
Это приведет к удалению всего содержимого между теги.
$text = preg_replace('/([\s\S]*)(<em>)([\s\S]*)(</em>)([\s\S]*)/', '$1$5', $text);
$text = '<p>This is some example text This is some example text This is some example text</p> <p><em>This is the em text</em></p> <p>This is some example text This is some example text This is some example text</p>'; preg_match("#<em>(.+?)</em>#", $text, $output); echo $output[0]; // This will output it with em style echo '<br /><br />'; echo $output[1]; // This will output only the text between the em
[ Просмотр вывода ]
Чтобы этот пример работал, я немного изменил содержимое <em></em>
, в противном случае весь текст будет таким же, и вы не сможете понять, работает ли скрипт.
Однако, если вы хотите избавиться от <em>
и не получать содержимое:
$text = '<p>This is some example text This is some example text This is some example text</p> <p><em>This is the em text</em></p> <p>This is some example text This is some example text This is some example text</p>'; echo preg_replace("/<em>(.+)<\/em>/", "", $text);
[ Просмотр вывода ]
Используйте strrpos, чтобы найти первый элемент, а затем последний элемент. Используйте substr, чтобы получить часть строки. А затем замените подстроку пустой строкой из исходной строки.
format: $text = str_replace('<em>','',$text); $text = str_replace('</em>','',$text);