2012-04-26 23 views
2

大文字のHTMLタグを小文字のものに置き換えるには、次のようにします。大文字のhtmlタグを小文字に変換する

$output = preg_replace("%<(/?[A-Z].*?)>%s",strtolower('$1'),$output); 

(私のRegExテストサイトでは)マッチングがうまくいっているようですが、置き換えはできません。

<EM>TEST</EM> becomes EMTEST/EM 

誰かがこれに正しい方向に私を指すことができます。

+0

正しい方向は、HTMLタグを大文字で書くことではありません:) –

+0

はい、この問題を完全に回避しようとしていますが、問題のあるアプリケーションの一部の領域がまだあります。 – jsuissa

答えて

3

"$1"strtolowerを呼び出してから、結果を使用します(もう一度$1)。

代わりに、preg_replace_callbackを使用して、コールバックがあることがあります。function($m) {return strtolower($m[0]);}

1
$output = preg_replace("%<(/?[A-Z].*?)>%se", "'<' . strtolower('\\1') . '>'",$output); 

編集:あなたがHTMLのもののためませ使用preg :)のDOMDocumentがはるかに良い選択である必要があることを言及するのを忘れてしまいました。

+0

Thx。 DomDocumentを調べ始めると、あなたは何を意味するのか分かります。 – jsuissa

+0

ところで、 'e'修飾子はPHP 5.5以降では非推奨です。 – Parziphal

関連する問題