【发布时间】:2012-11-14 13:53:01
【问题描述】:
我有 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 中执行此操作吗?
这在没有正则表达式的情况下可以解决问题(感谢 Alexandru),但我很好奇我可以使用什么正则表达式来实现这一点......
$beginIndex = strpos($htmlString, "</h1>");
$endIndex = strpos($htmlString, "<h2>What we offer</h2>");
$desiredString = substr($htmlString, $beginIndex, $endIndex - $beginIndex);
【问题讨论】:
-
有用的在线正则表达式工具:gskinner.com/RegExr
-
您在“SAME HERE
”附近弄错了,应该是“SAME HERE
”。注意结束斜线。您可以使用此正则表达式:“(.+)
(.+)
”,因为在您的示例中,“needed test
”之间没有换行符>需要文本
”,但其中有你不想要的内容。 -
除了你不想要的 h2 之外,没有什么可以设置你想要的 h2。你只想要页面中的第一个 h2 吗?还是除了最后一个?