首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >regex help - php

regex help - php
EN

Stack Overflow用户
提问于 2010-06-04 20:36:59
回答 6查看 59关注 0票数 1
代码语言:javascript
运行
复制
$data = "<Data>hello</Data>";
preg_match_all("/\<Data\>[.]+\<\/Data\>/", $data, $match);
print_r($match);

这将返回:

代码语言:javascript
运行
复制
Array ( [0] => Array ( ) )

所以我猜是不是匹配了?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-06-04 20:40:13

代码语言:javascript
运行
复制
preg_match_all("#<Data>.+</Data>#", $data, $match);

如果您想使用/作为分隔符:

代码语言:javascript
运行
复制
preg_match_all("/<Data>.+<\/Data>/", $data, $match);

主要问题是字符类中的.与文字句点匹配。此外,使用不同的分隔符可以消除转义。请注意,无论哪种方式,您都不必转义<。如果您希望能够提取内部值,请使用:

代码语言:javascript
运行
复制
preg_match_all("#<Data>(.+)</Data>#", $data, $match);

在您的示例中,"hello“现在将出现在$matches[1]中。请注意,正则表达式不适合解析XML,因此对于任何重要的事情,请切换到真正的解析器。

票数 2
EN

Stack Overflow用户

发布于 2010-06-04 20:40:36

您正在使用[]和。不正确。

试试这个:

代码语言:javascript
运行
复制
$data = "<Data>hello</Data>";
preg_match_all("/\<Data\>.+\<\/Data\>/", $data, $match);
print_r($match);

当您使用[]定义一个可能的字符列表时,在本例中,您定义的字符仅限于。只有这样。如果要使用。要定义任何字符,必须在[]之外使用它。

票数 2
EN

Stack Overflow用户

发布于 2010-06-04 20:42:36

代码语言:javascript
运行
复制
<?php

$data = "<Data>hello</Data>";
preg_match_all('#<Data>(.+)</Data>#', $data, $match);
print_r($match);

?>

输出:(as seen on ideone.com)

代码语言:javascript
运行
复制
Array
(
    [0] => Array
        (
            [0] => <Data>hello</Data>
        )

    [1] => Array
        (
            [0] => hello
        )

)

[...]是一个字符类定义。您可以使用(...)来捕获。

参考文献

  • regular-expressions.info/Character ClassGroups

关于不情愿匹配的特别说明

由于您使用的是preg_match_all,应该注意的是,您当前正在贪婪地匹配。也就是说,比方说,在<Data>hello</Data><Data>how are you</Data> (see on ideone.com)中只有一个匹配。

如果同时需要两个<Data>元素,则必须使用不情愿的匹配'#<Data>(.+?)</Data>#' (see on ideone.com)。

举例说明:

代码语言:javascript
运行
复制
----A--Z----A----Z----
    ^^^^^^^^^^^^^^
        A.*Z

在上面的输入中只有一个A.*Z匹配。

有关解析HTML/XML的正则表达式的特别说明

这是一种痛苦。如果可能,请使用适当的HTML/XML解析器。PHP有很多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2974142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档