3

の出力を取得して配列を作成する必要がありますが$one、返されるのは 1 つのキーと 1 つの値を持つ配列だけなので、正規表現は正しくありません。基本的に、文字列全体。文字列に 10 個の段落タグがある場合、配列に 10 個の値を取得する必要があります。

私の正規表現の何が問題になっていますか?

理想的には、出力配列に入れたいのは 2 つの配列です。1 つは段落タグを含み、もう 1 つはそれらの間にテキストのみを含みます。

$one = preg_replace( '/<p>/i', '<p class="test">', $str ); // This gives me what I need
print_r(explode( '/<p class="test">/iU', $one )); // This does not
4

1 に答える 1

0

問題は簡単です。Explode は正規表現を使用しません。これはうまくいくはずです。

print_r(explode('<p class="test">', $one ));

編集:これはあなたが望むことをするべきです。

$pattern = '/(?P<open><p class="test">)'
          . '(?P<content>.*)'
          . '(?P<close><\/p>)/i';
preg_match_all($pattern, $one, $matches);
print_r($matches);

編集:マッチタグなしの簡略版:

$pattern = '/(<p class="test">)(.*)(<\/p>)/i';
preg_match_all($pattern, $one, $matches);
print_r($matches);
于 2012-12-04T00:54:14.407 に答える