dougaoxian8922 2014-08-20 16:15
浏览 64
已采纳

preg_match_all找不到匹配

Nothing appears to be wrong with the expression. I've matched it to the sample HTML in several editors. But once I plug it into preg_match_all, I get no results.

Any ideas?

$regex_lists = '~<ul.*?>.+?</ul>~m';
preg_match_all($regex_lists, $html, $lists);

var_dump($lists); //empty array

Sample HTML

<ul type="disc">
<br><li class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal; mso-margin-      top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list   .5in;">
<span style='font-family: "Arial","sans-serif"; font-size: 12pt; mso-fareast-font-  family: "Times New Roman";'>Maintain complete knowledge of and comply with all departmental policies/service procedures/standards. <p></p></span>
<br>
</li>
<li class="MsoNormal" style="margin: 0in 0in 10pt; line-height: normal; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto; mso-list: l0 level1 lfo1; tab-stops: list .5in;">
<span style='font-family: "Arial","sans-serif"; font-size: 12pt; mso-fareast-font-  family: "Times New Roman";'>Maintain complete knowledge of correct maintenance and use of equipment. Use equipment only as intended. <p></p></span>
<br>
</li>
</ul>
  • 写回答

1条回答 默认 最新

  • duandun3178 2014-08-20 16:16
    关注

    Since your input has newlines as well you need s (DOTALL) flag to make dot match newlines:

    $regex_lists = '~<ul.*?>.+?</ul>~is';
    

    OR

    $regex_lists = '~<ul[^>]*>.+?</ul>~is';
    

    PS: Also m flag is not needed in your regex.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置