我有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);
答案 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];