PHP正则表达式,获取数据部分

时间:2012-11-14 13:53:02

标签: php html regex

我有HTML数据,但我想得到一些这样的数据。应删除顶部和底部。 (H1之后的所有内容以及H2之上的文本'我们提供的内容'应该放在一个变量中)

<p>This text can be deleted</p>
<h1>This title also</h1>

<h2>FROM THIS TITLE I WANT THE TEXT</h2><p>SAME HERE</p>
<h2>...</h2><p>...</p>

<h2>What we offer</h2>
<p>This text isn't needed</p>

我希望所有HTML和文字在</h1>之后开始,并以<h2>What we offer</h2>结束 知道如何在PHP中执行此操作吗?

这没有regexp的技巧(感谢Alexandru),但我很好奇我可以用什么正则表达式来实现这个...

$beginIndex = strpos($htmlString, "</h1>");
$endIndex = strpos($htmlString, "<h2>What we offer</h2>");
$desiredString = substr($htmlString, $beginIndex, $endIndex - $beginIndex);

2 个答案:

答案 0 :(得分:1)

鉴于您需要的定义,这应该有效:

$beginIndex = strpos($htmlString, "</h1>");
$endIndex = strpos($htmlString, "<h2>What we offer</h2>");
$desiredString = substr($htmlString, $beginIndex, $endIndex - $beginIndex);

答案 1 :(得分:1)

您要求的正则表达式解决方案如下所示:

$pattern = '/<\/h1>(.*)<h2>What we offer/s';
$matches = array();
preg_match($pattern, $htmlString, $matches);
$desiredString = $matches[1];