preg_match返回空数组

时间:2012-06-24 23:03:57

标签: php

我总是使用preg_match,它总能正常工作, 但今天我试图在两个html标签<code: 1>DATA</code>

之间获取内容

我遇到了一个问题,我的代码解释道:

function findThis($data){
    preg_match_all("/\<code: (.*?)\>(.*?)\<\/code\>/i",$data,$conditions);
    return $conditions;
}

    // plain text
    // working fine

    $data1='Some text...Some.. Te<code: 1>This is a php code</code>';

    //A text with a new lines
    // Not working..

    $data2='some text..
    some.. te
    <code: 1>
    This is a php code
    ..
    </code>
    ';

    print_r(findThis($data1));

    // OUTPUT
    // [0][0] => <code: 1>This is a php code</code>
    // [1][0] => 1
    // [2][0] => This is a php code

    print_r(findThis($data2));

    //Outputs nothing!

1 个答案:

答案 0 :(得分:6)

这是因为。 PHP中的字符是除换行符之外的任何内容的通配符。包括换行符在内的例子会破裂。你想要做的是在模式的末尾添加“s”标志,这会修改。绝对匹配所有内容(包括换行符)。

/\<code: (.*?)\>(.*?)\<\/code\>/is

见这里:http://www.php.net/manual/en/regexp.reference.internal-options.php