Почему шаблон регулярного выражения не соответствует коду? - PullRequest
0 голосов
/ 14 октября 2011

У вас есть идеи, почему это регулярное выражение не соответствует приведенному ниже коду?

$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 ]

3 голосов
/ 14 октября 2011

Не используйте регулярные выражения для разбора XML.

Ваше выражение не работает, потому что точка не соответствует новым строкам. Добавление модификатора DOTALL /.../s исправит это, но тогда у вас будут другие проблемы, такие как жадное сопоставление вместо ленивого.

Было бы лучше использовать синтаксический анализатор XML.

0 голосов
/ 14 октября 2011

Вот мое предложение для правильного регулярного выражения:

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