如何通过指定开始和结束字符从字符串中子字符串?

时间:2015-05-21 22:55:49

标签: php explode string-split

我有一些文本总是以图像标记开头,所以我想打印没有图像的文本,方法是指定应该删除的字符串的开头和结尾字符,然后获取文本的其余部分,像:

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中做到这一点?

5 个答案:

答案 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()函数。它在这里表示!

http://php.net/substr