无法弄清楚为什么我的正则表达式中的OR条件无效。
$str = " <li><a href=\"\" class=\"gateway-image\"><img src=\"<?=theme_url()?>/images/Cherry Credits.jpg\" alt=\"\"/></a></li>
<li><a href=\"\" class=\"gateway-image\"><img src=\"<?=theme_url()?>/images/gudangvoucher.jpeg\" alt=\"\" style=\"width: 140px!important\"/></a></li>";
$regexp = '/^(.*\<li\>\<a href\=)(.*cherry|credits.*)$/im';
preg_match($regexp, $str, $m);
似乎正则表达式是正确的,但它找不到我预期的字符串Cherry Credits.jpg
。有什么问题?
答案 0 :(得分:0)
您已使用行尾^
和$
编写了表达式。
这不匹配,因为您的字符串会在cherry
之后继续,并且 href=
和credits
之间还有其他字符。
您可以删除线锚:
(.*\<li\>\<a href\=)(.*cherry|credits.*)
或者您可以在捕获组之外移动尾随.*
(可能还有前导.*
):
^(.*\<li\>\<a href\=).*(cherry|credits).*$
答案 1 :(得分:0)