3

私はいつも使っpreg_matchていて、いつもうまくいきますが、今日は2つの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!
4

1 に答える 1

7

これは、. PHP の character は、 newline 以外のワイルドカードです。改行を含む例は壊れます。やりたいことは、パターンの最後に「s」フラグを追加することです。これにより、. 絶対にすべてに一致します (改行を含む)。

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

ここを参照してください: http://www.php.net/manual/en/regexp.reference.internal-options.php

于 2012-06-24T23:08:46.723 に答える