我有一些文本总是以图像标记开头,所以我想打印没有图像的文本,方法是指定应该删除的字符串的开头和结尾字符,然后获取文本的其余部分,像:
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中做到这一点?
答案 0 :(得分:1)
根据新问题进行修订......
使用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>
有关详情/示例
,请参阅here答案 1 :(得分:1)
试试这个:
$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();
答案 2 :(得分:0)
给出一些文字:
<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);
答案 3 :(得分:0)
似乎是最佳答案:
$dom = new DOMDocument();
$dom->loadHTML($m->en);
$node = $dom->getElementsByTagName('img')->item(0);
$node->parentNode->removeChild($node);
$string = $dom->saveHTML();
echo $string;
答案 4 :(得分:-2)
您可能没有听说过PHP的substr()函数。它在这里表示!