使用RegExr的Regexp(http://gskinner.com/RegExr/)但不是在PHP preg_match中

使用RegExr的Regexp(http://gskinner.com/RegExr/)但不是在PHP preg_match中,php,regex,string,Php,Regex,String,我这里有一个正则表达式,它必须匹配html锚标记并从字符串中提取它们 <a(.*)href=[\'A-Za-z0-9\"@?+:\-_.\/]+( *)[\'A-Za-z0-9\"@?+:\-_.-=\/ ]+( *)>( *)[\'A-Za-z0-9\"@?+:\-_.-=\/ ]*( *)</( *)a> (*)[\'A-Za-z0-9\'@?+:\-\-\-=\/]*(*)i',$string,$matches); 它返回空数组,即没有结果:( 欢迎提供任何帮助

我这里有一个正则表达式,它必须匹配html锚标记并从字符串中提取它们

<a(.*)href=[\'A-Za-z0-9\"@?+:\-_.\/]+( *)[\'A-Za-z0-9\"@?+:\-_.-=\/ ]+( *)>( *)[\'A-Za-z0-9\"@?+:\-_.-=\/ ]*( *)</( *)a>
(*)[\'A-Za-z0-9\'@?+:\-\-\-=\/]*(*)i',$string,$matches);
它返回空数组,即没有结果:(


欢迎提供任何帮助和更正。

您的第一个问题是,您给
preg\u match\u all
的正则表达式与给
RegExr
的正则表达式不同

在PHP的单引号字符串文本中,
\
在另一个
\
或一个
'
之前被特殊处理。在这两种情况下,
\
是一个前缀转义,允许将
\
'
插入字符串中

<a(.*)href=[\'A-Za-z0-9\"@?+:\-_.\/]+( *)[\'A-Za-z0-9\"@?+:\-_.-=\/ ]+( *)>( *)[\'A-Za-z0-9\"@?+:\-_.-=\/ ]*( *)</( *)a>
因此,无论正则表达式中有
\
'
,都必须在单引号字符串文本中使用
\
\'
,以便将它们传递给
preg\u match\u all


例如,如果你有
\'
你必须使用
\\\'

你正在用正则表达式解析HTML。不要。我这样做只是为了练习…否则我怎么解析它呢?正则表达式可以工作,它不会匹配每一个HTML变体。因为你没有发布一个这样的示例,这几乎是无法回答的。因为我是正则表达式的新手,所以我是Experrimenting.和(*)似乎适用于spaces@hussainPHP有一系列实现DOM的类:这是目前为止遍历HTML的最好方法。Thanx man,它现在可以工作了。逃避\'是个问题。尽管我仍然需要找到一种方法使它只包含url。