0

<br />Magento のメタディスクリプションでエスケープなどを試みています。

だから私はこれを思いついた:

$characters = array("<br />", "<br>", "<br/>");
$badDesc = htmlspecialchars($this->getDescription());
$goodDesc = preg_replace($characters, ' ', $badDesc);

エスケープされる唯一の文字は「br /」ですが、残りは「< >」です

どうする?

4

4 に答える 4

0

preg_*関数が対応する括弧 (括弧、四角、中括弧、または角) を区切り文字として使用できることはあまり知られていません。これは、正規表現自体の中でこれらのブラケットをエスケープする必要がないことを意味するため、特に役立ちます。個人的には、括弧を使用するのが好きです。これは、一致配列の「インデックス 0」が一致全体を表していることを思い出すのに役立ちます。

とにかく、この場合、山かっこが区切り記号として使用されており、式でbr /,brbr/.

str_replace代わりに使用してください。preg_*定数文字列は必要ありません。

編集:そうは言っても、htmlspecialchars最初に使用しています。を使用することに加えて、HTML をマングルする前にstr_replace、置換を使用していることを確認してください;)

于 2013-09-23T09:40:27.133 に答える
0

この正規表現を試してください:

$desc = preg_replace('/\<br(\s.*)?\/?\>/i', " ", $this->getDescription());

php docsのコメントから適応。

于 2013-09-23T09:43:35.810 に答える