我有一个网站,它的源html代码看起来像下面的东西。
<li class="item" xx-href-xx="http://xx.xx/s/randomtext/randomtext?NOTradnomtext" yy-href-gg="http://xx.xx/X/RANDOMTEXTWHATIWANT/STILLRADNOMTEXTWHATIWANT?NOTradnomtext" data="212123134" data-title="TITLE">
<a class="front" href="#" xx-href="http://xx.xx/s/randomtext/randomtext?NOTradnomtext">
<img src="http://photo.jpg" alt="">
<div class="cock">
<div class="action"></div>
</div>
</a>
<div class="label">
<div>
<h3 class="title">Example</h3>
<p>2013-10-25 : 03:35</p>
</div>
</div>
</li>
... And so on same kind of classes (only titles and texts changing) ...
如何preg_match yy-href-gg="http://xx.xx/X/TEXTWHATIWANT/TEXTWHATIWANT?NOTradnomtext从所有这些记录,并包括标题的结果。所以result在本例中应该是这样的
例子TEXTWHATIWANT/TEXTWHATIWANT
Example2
TEXTWHATIWANT/TEXTWHATIWANT
使用字符类和反字符类来匹配您允许或不允许的字符。使用'K
来忘记任何匹配的字符,以便您只获得所需的文本部分作为完整字符串匹配(没有捕获组)。
我假设你的url路径在目录斜杠之间匹配非斜杠、非双引号和非问号字符是相对安全的。
代码(演示):
preg_match_all(
'# [a-z]{2}-href-[a-z]{2}="https?://[^/"?]+/[^/"?]+/'K[^/"?]+/[^/"?]+#i',
$html,
$matches
);
var_export($matches[0]);