正则表达式拆分为多个匹配

时间:2018-02-14 14:28:38

标签: php regex

如何拆分不同的链接。

<ul>
<li><a href="/page/?link1=2&page=2#fff">pag2 </a></li><li><a href="/page/">pag2 </a></li><li><a href="/page/">pag2 </a></li>
</ul>

我尝试过类似的东西,但它根本找不到它

$re = '/<a href=["\'](([^\'\"\#]*)?)(?=[\'"\#])(.*)["\']>[^<\/a>]+<\/a>/mi';
$str = '<ul>
<li><a href="/page/">pag2 </a></li><li><a href="/page/">pag2 </a></li><li><a href="/page/">pag2 </a></li>
</ul>


';

preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

// Print the entire match result
var_dump($matches);

也试试这个,但它捕获了所有

$re = '/<a href=["\'](([^\'\"\#]*)?)(?=[\'"\#])(.*)["\']>.+<\/a>/mi';

1 个答案:

答案 0 :(得分:0)

\shref=(["'])(.*?)\1

故障:

  • \s - 空格字符,不匹配<other-prefix>-href="example.com"
  • href= - 字面匹配href=
  • (["']) - 捕获所使用的引用类型(第1组)
  • (.*?)捕获所有内容,直到(第2组)
  • \1 - 您会找到所使用的引用类型(与第1组中匹配的内容相匹配)

请参阅demo