У меня есть некоторые тексты, которые всегда начинаются с тега изображения, поэтому я хочу напечатать текст без изображения, указав начальный и конечный символы строки, которые должны быть удалены, и получить остальную часть текста, что-то вроде:
explode($text, '<img', '/>'); // where explode($string, $start_chars, $end_chars);
например:
$text = "<img src='anything' width='100' height='200'/><h1>Hello World!</h1>";
выход должен быть <h1>Hello World!</h1>
так как я могу сделать это в php?
Пересмотрено на основе нового вопроса …
Использовать DOMDocument:
$text = "<img src='anything' width='100' height='200'/><h1>Hello World!</h1>";
$dom = new DOMDocument();
$dom->loadHTML($text);
$h1Tags = $dom->getElementsByTagName('h1');
$string = $dom->saveHTML($h1Tags->item(0));
echo $string;
Выход: <h1>Hello World!</h1>
Увидеть Вот для получения дополнительной информации / примеров
Попробуйте с этим:
$text = "<img src='anything' width='100' height='200'/><h1>Hello World!</h1>";
$dom = new DOMDocument();
$dom->loadHTML($text);
$node = $dom->getElementsByTagName('img')->item(0);
$node->parentNode->removeChild($node);
$dom->removeChild($dom->doctype);
$dom->replaceChild($dom->firstChild->firstChild->firstChild, $dom->firstChild);
echo $dom->saveHtml();
Учитывая некоторый текст как:
<img src='img1.png' width='100' height='200'/><h1>Title 1</h1>
<img src='img2.png' width='100' height='200'/><h1>Title 2</h1>
<img src='img4.png' width='100' height='200'/><h1>Title 3</h1>
Вы заявляете, что хотите собрать только текст, который появится между тегами IMG. Это не было ясно заранее, и было предложено, вы можете использовать DOMDocument для анализа HTML.
Использование регулярных выражений — это еще один способ. Пример: https://regex101.com/r/kH0xA3/1
$re = "/<*img.*\\/>(.*)/im";
$str = "<img src='img1.png' width='100' height='200'/><h1>Title 1</h1>\n<img src='img2.png' width='100' height='200'/><h1>Title 2</h1>\n<img src='img4.png' width='100' height='200'/><h1>Title 3</h1>";
preg_match_all($re, $str, $matches);
кажется оптимальным ответом:
$dom = new DOMDocument();
$dom->loadHTML($m->en);
$node = $dom->getElementsByTagName('img')->item(0);
$node->parentNode->removeChild($node);
$string = $dom->saveHTML();
echo $string;
Возможно, вы не слышали о функции substr () в PHP. Это указано здесь!