Preg匹配随机文本从html源代码使用PHP


Preg matching random text from html source code using PHP

我有一个网站,它的源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]);