为什么正则表达式模式与代码不匹配?

时间:2011-10-14 12:52:21

标签: php regex preg-match-all

你知道为什么这个正则表达式与下面的代码不匹配吗?

$regex = "!<title>(.*?)</title>!i";

代码:

<b:include data='blog' name='all-head-content'/>
<title>
    <b:if cond='data:blog.homepageUrl == data:blog.url'>
        <data:blog.title/>
    <b:else/>
        <data:blog.pageName/> &raquo; <data:blog.title/>
    </b:if>
</title>
<link href='http://fonts.googleapis.com/css?family=Open+Sans:400,700' rel='stylesheet' type='text/css'/>

2 个答案:

答案 0 :(得分:3)

不要使用正则表达式来解析XML。

您的表达式不起作用,因为点与新行不匹配。添加DOTALL修饰符/.../s可以解决这个问题,但是您会遇到其他问题,例如贪婪地匹配而不是懒惰。

使用XML解析器会更好。

答案 1 :(得分:0)

以下是我对正确的正则表达式的建议:

(?<=<title>)(.*)(?=</title>)