如何解决正则表达式始终先跳过应匹配的内容
| 我正在尝试在菜单上进行preg_match。但是php似乎一直在跳过应该是第一个匹配项的内容。我找不到原因。<div id=\"subnav\">
<div class=\"wrap\">
<ul id=\"menu-patternstutorials\" class=\"nav superfish\">
<li id=\"menu-item-11512\" class=\"menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home current-menu-ancestor menu-item-11512\">
<a href=\"http://localhost/Sites/craftpassion/\">Patterns Tutorials</a>
<ul class=\"sub-menu\">
<li id=\"menu-item-11506\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category current-menu-ancestor current-menu-parent menu-item-11506 star-li-bg\">
<a title=\" TEST\" href=\"http://localhost/Sites/craftpassion/category/needle-craft/sewing\">Sewing</a>
<ul class=\"sub-menu\">
<li id=\"menu-item-11508\" class=\"menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home current-menu-ancestor current-menu-parent menu-item-11508\">
<a href=\"http://localhost/Sites/craftpassion/\">Basic Techniques</a>
<ul class=\"sub-menu\">
的PHP
$pattern = \'#<ul[^`]*?>[\\s]*?<li [^`]*?>[\\s]*?<a[^`]*?>([^`]*?)</a>[\\s]*?<ul[^`]*?>#i\';
preg_match($pattern,$menu,$matches);
我期待:
<ul id=\"menu-patternstutorials\" class=\"nav superfish\">
<li id=\"menu-item-11512\" class=\"menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-home current-menu-ancestor menu-item-11512\">
<a href=\"http://localhost/Sites/craftpassion/\">Patterns Tutorials</a>
<ul class=\"sub-menu\">
但请继续:
<ul class=\"sub-menu\">
<li id=\"menu-item-11506\" class=\"menu-item menu-item-type-taxonomy menu-item-object-category current-menu-ancestor current-menu-parent menu-item-11506 star-li-bg\">
<a title=\" TEST\" href=\"http://localhost/Sites/craftpassion/category/needle-craft/sewing\">Sewing</a>
<ul class=\"sub-menu\">
为什么它不符合第一个预期?
解决方法
HTML!=常规语言。看到:
RegEx匹配XHTML自包含标签以外的打开标签
,不要使用正则表达式解析(X)HTML。由于您不使用正则语言(正则表达式能够处理),因此不可能(正确地)执行此操作。请改用DOM或SAX解析器。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。