0

正規表現を含む php コードがあり、li タグ内の p タグの新しい行で失敗します。このコードを実行すると、コードが削除</ul></li>されます。

<?php
$data   =   "<h1>test</h1>
            <h2>test</h2>
            <p>This is not real text but just a test, This is not real text but just a test, This is not real text but just a test, This is not real text but just a test, This is not real text but just a test</p>
            <ul><li><p>This is not real text but just a test, This is not real text but just a test, This is not real text but just a test, This is not real text but just a test</p>
            </li></ul>
            <ul><li><p>This is not real text but just a test, This is not real text but just a test, This is not real text but just a test, This is not real text but just a test</p>
            </li></ul>";

$pattern    =   "#[\<ul\>\<li\>]*\<[p]*[h1]*[h2]*[h3]*\>(.+?)\</[p]*[h1]*[h2]*[h3]*\>[\</li\>\</ul\>]*#is";
preg_match_all($pattern, $data, $output);
var_dump($output);
?>

誰でもこれで私を助けることができますか?

4

1 に答える 1

0

あなたが達成しようとしていることは完全にはわかりませんが、パターンを修正するには次のようになると思います:

#\s*(<ul><li>)?(\s*<(p|h1|h2|h3)>)*(.+?)(</(p|h1|h2|h3)>\s*)*(</li></ul>)?#is

編集:1つの間違いを修正

于 2012-07-04T12:26:56.663 に答える