PHP中的正则表达式与XML函数

时间:2009-10-08 15:35:30

标签: php xml regex performance preg-match-all

我目前做了很多数据解析,并且已经玩弄了PHP的PHP函数,比如简单的XML和其他一些人。

但是处理它们似乎总是存在某种问题,主要是由于数据的呈现方式。

我找到的最可靠的方法是始终只使用preg_match_all和正则表达式将我的数据提取到脚本中进行处理。

有没有人看到这个问题?使用正则表达式而不是现成的XML解析器有什么缺点?

我主要担心的是资源的速度和服务器利用率。

2 个答案:

答案 0 :(得分:1)

如果您使用DOMDocument和DOMXpath,我怀疑这些将解决您的问题。

请参阅http://jp2.php.net/manual/en/class.domdocument.phphttp://jp2.php.net/manual/en/class.domxpath.php

你能举例说明你想做什么吗?

修改
但是直接回答你的问题:正则表达式很容易搞砸 - 尤其是处理像xml这样的层次结构。即使你做得对,它也可能比使用xpath慢。

编辑2
只是补充说,php的xpath实现,DOMXpath只支持xpath 1.0。如果你需要使用正则表达式来评估元素或其中一个属性的内容,那么你需要一些支持xpath 2.0的东西....或者使用一个冒险的,容易出错的正则表达式。

答案 1 :(得分:1)

XML解析是一项严重的高开销业务。如果您的数据流非常简单,可以使用正则表达式进行解析,那么这将是解析它的最有效方法。

如果您想在最小化资源的同时进行XML解析,那么SAX解析器可能是您最好的选择。它不会像手工制作的正则表达式那样高效,但它可能已经足够好了。

http://www.brainbell.com/tutorials/php/Parsing_XML_With_SAX.htm

DOM和Simple XML解析器需要加载整个文档,然后他们可以验证doc,然后将其转换为节点结构,然后就可以使用这些数据了。听起来像解析器的很多工作?它是。但出于许多目的,它仍然是合适的。

对于我的大部分工作,我已经放弃了XML并使用了JSON。