我有这个HTML标签:
<div class="title">Copy me if you can</div>
所以我想用preg_match来"如果可以的话跟我走"我正在使用这种怀孕模式:
$preg = "<div class='"title'">(.+?)</div>";
所以我写了这段代码
$match = preg_match($preg,$content);
浏览器输出:
Warning: preg_match() [function.preg-match]: Unknown modifier '('
什么
你忘记了分隔符
$preg = '~<div class="title">(.+?)</div>~';
模式中的第一个字母始终定义要使用的分隔符。在您的情况下,它的<
,因此结束分隔符是 >
。之后的所有内容都用作特殊修饰符,从而改变特定行为。 (
不是有效的修饰符。这就是错误消息想要告诉您的:)
尝试 : $preg = '/<div class="title">([^<]+)</div>/';
就个人而言,当涉及 HTML 时,我会避开事实上的分隔符/
并使用 # 代替,这样您就不必记住转义任何结束的 HTML 标记。
$preg = '#<div class="title">([^<]+)</div>#';
您需要在正则表达式中添加分隔符。试试这个:
$preg = "/<div class='"title'">(.+?)<'/div>/";
/
是标记正则表达式开始和停止的分隔符。使用分隔符的原因是为了您可以将标志添加到正则表达式中。这些标志插入到正则表达式之后。例:
$preg = "/<div class='"title'">(.+?)<'/div>/i";
我添加了i
作为修饰符,将正则表达式搜索标记为不区分大小写。
我有同样的问题,想知道我是否可以做同样的事情,例如:警告: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;
}