Php 当粘贴到preg_match_all()时,正则表达式模式导致语法错误

Php 当粘贴到preg_match_all()时,正则表达式模式导致语法错误,php,regex,Php,Regex,我使用在线正则表达式测试仪得出了以下模式:(我粘贴了所有三行,因为我不确定应该粘贴正则表达式还是该模式。) RegExp:/.*(.*?).*“更多”>(.*?)\|/g 模式:.*(.*).*?“更多”>(.*)\| 国旗:g 如果我在php中这样使用它: $pattern = '/<div class="label">.*?<h3>(.*?)</h3>.*?"more">(.*?)\|/g'; preg_match_all($pattern,$p

我使用在线正则表达式测试仪得出了以下模式:(我粘贴了所有三行,因为我不确定应该粘贴正则表达式还是该模式。)

RegExp:/.*(.*?).*“更多”>(.*?)\|/g
模式:.*(.*).*?“更多”>(.*)\|
国旗:g
如果我在php中这样使用它:

$pattern = '/<div class="label">.*?<h3>(.*?)</h3>.*?"more">(.*?)\|/g';

preg_match_all($pattern,$page,$matches );
$pattern='/.*(.*?).*“更多”>(.*?)\|/g';
preg_match_all($pattern,$page,$matches);
我得到一个错误:

警告:preg_match_all() [function.preg match all]:未知 在


有人能解释一下我如何从这个工具中获取正则表达式,转换成正确的格式,以便在PHP中使用吗。非常感谢。

您没有逃脱
中的斜杠,
g
意味着全局应用,这在这里是不需要的,因为您使用的是
preg\u match\u all
,并且它在PHP的regex实现中无效,请忽略它

试试这个:

$pattern = '/<div class="label">.*?<h3>(.*?)<\/h3>.*?"more">(.*?)\|/';
$pattern='/.*(.*?).*“更多”>(.*?\ |/”;

您没有跳过
中的斜杠,
g
意味着全局应用,这在这里是不需要的,因为您使用的是
preg\u match\u all
,并且它在PHP的regex实现中无效,只需省略它即可

试试这个:

$pattern = '/<div class="label">.*?<h3>(.*?)<\/h3>.*?"more">(.*?)\|/';
$pattern='/.*(.*?).*“更多”>(.*?\ |/”;

一个常见的替代方法是使用一些不常见的字符,如
#
作为正则表达式分隔符,例如在
#r?例如*ex#i
-这通常有助于避免无关的转义。天哪,转义太快了!然而,对于您的模式,我得到了:Warning:preg_match_all()[function.preg match all]:未知修饰符“g”在…@Pickledegg:ah right,
g
表示全局应用,这在这里是不需要的,因为您使用的是
preg_match_all
,并且它在PHP中不是有效的修饰符,只需省略它(答案经过编辑以反映更改).三个简单的词:最好。论坛。曾经感谢一百万人的力量。一个常见的替代方法是使用一些不常见的字符,如
作为正则表达式分隔符,例如在
\r?例如*ex#i
-中,这通常有助于避免无关的转义。天哪,这太快了!然而,对于您的模式,我得到了:Warning:preg_match_all()[function.preg match all]:未知修饰符“g”在…@Pickledegg:ah right,
g
表示全局应用,这在这里是不需要的,因为您使用的是
preg_match_all
,并且它在PHP中不是有效的修饰符,只需省略它(答案经过编辑以反映更改).三个简单的词:最好。论坛。曾经感谢一百万人的力量。