与正则表达式的酷项目

时间:2014-03-18 11:26:26

标签: php xml regex

我正在开发一个自称很酷的项目,用户可以用Sql语法提取Xml数据。

<?ml version="1.0" encoding="utf-8"?>
<data attr1='some data' attr2='some data'>
    <personalData>
        <name>Mario</name>
        <lastName>Legenda</lastName>
        <birthData>
            <day>18</day>
            <month num="06">june</month>
            <godina>1986</godina>
        </birthData>
        <sex>M</sex>
        <death>N/A</death>
        <OIB>569874125369</OIB>
        <JMBG>25698745212</JMBG>
        <misc>
            <employed>n</employed>
            <student>n</student>
            <intelligence>n</intelligence>
            <tolerant>n</tolerant>
            <specialPowers>n</specialPowers>
            <married>n</married>
            <relationshipStatus>n</relationshipStatus>
            <socialLife>n</socialLife>
        </misc>
    </presonalData>
</data>

要获取整个数据&#39;标签,sql将是SELECT data FROM path/to/file/data.xml。在确定类之后验证语法是否正确,数据提取开始。

我想用正则表达式做这个项目,而不是使用Dom,SimpleXml或其他我希望更好地学习正则表达式。所以......我试图评估这些数据是否属于&#39;指定的xml中的标记存在。我这样做......

 preg_match('#<data\s?([\w]+=[\w]+\s?)+?>#i', $XmlAsString, $match);

?运营商给了我麻烦。它似乎并不知道\ s是一个空的空间。所以他只给我$match数组中的attr2属性。

1 个答案:

答案 0 :(得分:0)

如果您能找到一种方法,这将是一个非常酷的项目,因为已建立的计算机科学理论认为XML不是常规语言(其定义是递归的),因此无法通过正则表达式解析。如果你做了这项工作,你就会反驳出计算机科学的基本定理。