针后获取文字?

时间:2010-02-07 11:59:46

标签: php string

如果我在字符串中有以下文字:

<h4>Tom</h4>
<p>One Paragraph</p>
<p>Two Paragraph</p>

我需要在该字符串上解析哪些代码才能获得这样的输出(如果我不知道<h4>标记内的内容是什么?

 <p>One Paragraph</p>
 <p>two Paragraph</p>

谢谢!

3 个答案:

答案 0 :(得分:10)

您可以使用strstr获取以</h4>开头的子字符串,并使用substr删除</h4>

$needle = '</h4>';
$rest = substr(strstr($string, $needle), strlen($needle));

自PHP 5.3起,您还可以使用 true 指定第三个参数 before_needle

$rest = strstr($string, $needle, true);

另一种方法是使用explode

list(,$rest) = explode($needle, $string, 2);

答案 1 :(得分:5)

使用stripios开始</h4>。将</h4>的长度添加到偏移量,然后使用substr获取偏移后的所有文本。

示例:

$str = '....Your string...';
$offset = stripos($str, '</h4>');
if ( $offset === false ){
    //error, end of h4 tag wasn't found
}
$offset += strlen('</h4>');
$newStr = substr($str, $offset);

我应该指出,如果HTML变得更复杂或者你不控制HTML,你可能想要使用HTML parser。如果(例如)遇到< /h4 >而不是</h4>,它会更加健壮且不太可能失败。但是,在这种情况下,它是过度的。

答案 2 :(得分:1)

除非您发布的示例HTML特别代表您的数据集,否则您可能会发现使用this one等HTML解析器更容易,更可靠。

HTML很难用正则表达式可靠地解析(技术上,不可能),解析器将为您提供一种非常简单的方法来查找您感兴趣的节点。

如果您对以上HTML感兴趣,那么您可以制作一个合适的正则表达式。对于任何更通用的东西,我会探索解析器路径。