2017-04-25 4 views
2

ライブラリで見つかった古いコードを書き直す必要があります。Pregコールバックの検証を置換する

$text = preg_replace("/(<\/?)(\w+)([^>]*>)/e", 
         "'\\1'.strtolower('\\2').'\\3'", $text); 

    $text = preg_replace("/<br[ \/]*>\s*/","\n",$text); 
    $text = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", 
         $text); 

そして、私はこのようにしようとした最初のもののために:

$text = preg_replace_callback(
    "/(<\/?)(\w+)([^>]*>)/", 
    function($subs) { 
     return strtolower($subs[0]); 
    }, 
    $text); 

私はB/C私はこの部分を理解していない少し混乱しています:"'\\1'.strtolower('\\2').'\\3'"をので、私はわからないんだけど何私はそれを交換する必要があります。

私の知る限りは、最初の行は、タグを探し、私は君たちが明確で、ここで私を助けることができる

<B>FOO</B> 

のようなデータを持っている場合には小文字それらを作り、私のコードが実行されている場合は理解して正しく?

答えて

1

$subsは、最初の項目の値全体と後続の項目のキャプチャされたテキストを含む配列です。したがって、グループ1は$subs[1]、グループ2の値は$subs[2]などです。$subs[0]には完全一致値が含まれており、strtolowerを適用しましたが、元のコードはグループ3の値を残しました(​​でキャプチャしました。手紙)そのまま。

使用

$text = preg_replace_callback("~(</?)(\w+)([^>]*>)~", function($subs) { 
    return $subs[1] . strtolower($subs[2]) . $subs[3]; 
}, $text); 

PHP demoを参照してください。

+1

ありがとうございました!私はこの答えをできるだけ早く受け入れます。 – Uffo

関連する問題