我有这个HTML标记:
<div class="title">Copy me if you can</div>
所以我想用preg_match来“只要你可以复制我” 我正在使用这种preg模式:
$preg = "<div class=\"title\">(.+?)</div>";
所以我写了这段代码
$match = preg_match($preg,$content);
浏览器输出:
Warning: preg_match() [function.preg-match]: Unknown modifier '('
什么
答案 0 :(得分:4)
你忘了分隔符
$preg = '~<div class="title">(.+?)</div>~';
模式中的第一个字母始终定义要使用的分隔符。在您的情况下为<
,因此结束分隔符为>
。之后的所有内容都被用作特殊修饰符,它会改变特定的行为。 (
不是有效的修饰符。这是错误消息想要告诉你的内容:)
答案 1 :(得分:1)
您需要为正则表达式添加分隔符。试试这个:
$preg = "/<div class=\"title\">(.+?)<\/div>/";
/
是分隔符,用于标记正则表达式的开始和停止。分隔符的原因是您可以为正则表达式添加标记。正则表达式后插入这些标志。例如:
$preg = "/<div class=\"title\">(.+?)<\/div>/i";
我添加了i
作为修饰符,将正则表达式搜索标记为不区分大小写。
答案 2 :(得分:1)
尝试:$preg = '/<div class="title">([^<]+)</div>/';
答案 3 :(得分:1)
就个人而言,当涉及到HTML时,我会远离事实定界符/
并使用#代替,因此您不必记住转义任何结束的HTML标记。
$preg = '#<div class="title">([^<]+)</div>#';
答案 4 :(得分:1)
我有同样的问题,并想知道我是否可以这样做,例如: 警告:preg_match()[function.preg-match]:第707行/home/08/public/www/wp-content/plugins/woocommerce-gateway-dibs-form/gateway-dibs.php中的未知修饰符't'
这是代码: if(preg_match($ _ SERVER [“REQUEST_URI”],'woocommerce / dibscancel')!== false){
header("HTTP/1.1 200 Ok");
$callback = new WC_Gateway_Dibs;
$callback->cancel_order(stripslashes_deep($_REQUEST));
return;
}