php
  • preg-replace
  • 2011-10-24 6 views 0 likes 
    0

    に署名:のPHPにpreg_replace |は、[、]私は、この「簡単な」コードに問題が

    $img_oryg = '<igm class="aligncenter" src="(oryginal img source)" alt="some text | some text">'; 
    $replace_with = '<div class="ivcs_holder"><igm class="aligncenter" src="(oryginal img source)" alt="some text | some text" /></div>'; 
    $content = preg_replace("#$img_oryg#s", $replace_with , $contetn); 
    echo $content; 
    

    これは勿論、サンプルコードであり、すべてが各画像に重なるループ、内部符号化されますdivと一緒に、またいくつかの他のものdoeas。 問題があります|画像のaltタグに追加することができます。それが存在する場合、コードは奇妙に動作し、結果は正しくありません。

    誰もそのような文字列を処理する方法を知っていますか?

    +1

    umptillionth + 1時間の場合:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454正規表現を使用してHTMLを解析しないでください。 。 –

    +0

    これで、HTMLを解析するために正規表現を使用すべきではないことがわかったので、同じ結果を得るにはどうすればよいですか? –

    +0

    @MarcB奇妙なことに、正規表現を使用してXML/HTMLパーサの一部を書いています –

    答えて

    0

    正規表現パターンでpreg_quoteを実行している間は、問題ありません。 |文字は正規表現で特別な意味を持っているので、これが問題を引き起こすのはこのためです。

    +0

    str_replaceを使用してコメントに記載されている人と同じ結果を得ました:) ああ、Marc Bの返信は役立ちました。 –

    関連する問題