0

これをMySQL InnoDB UTF8データベースに保存しました:

<p>長さ 5'1 インチ (155cm) のこの「ベイビー」グランド ピアノは 1930 年代に導入され、はるかに大きなピアノのパワフルで豊かな音色を特徴としています。ほとんどすべての部屋にうまく収まるほど小さいこのピアノは、コンサートグランドピアノと同じ材料と技術を使用しています。</p>

strip_tags($string) をエコーすると、PHP は次のように返します。

Introduced 5\'1\

以上です。ここで同様の報告されたバグを見つけました(一重/二重引用符ではなく、スラッシュの影響を受けます) が、解決されました。PHP 5.3.6 を使用しています。

を使用せずにこれを解決する方法はありますpreg_replaceか?

4

3 に答える 3

0

これは、PyroCMS が使用する Lex パーサーの問題でした。修正は次の場所にあります。

https://github.com/happyninjas/lex/commit/ff9aa30554fce47a8bfb6dc7c94143afc2fd8f93

また、変更を PyroCMS にコミットしました。次のリリースで実装されることを願っています。

于 2012-07-02T21:47:35.490 に答える
0

これは入力内ですか?引用で終わるから。

htmlentities(strip_tags($string)); を試してください。

<input type="text" value="Introduced 5\'1\" (155......" />
于 2012-07-02T13:38:21.607 に答える
0

次のことを試してください。

<?php

$pattern = '/<.*?>/';
$string  = '<p>At 5\'1" (155cm) in length, this "Baby" grand piano was introduced in the 1930\'s and features the powerful and rich tone of a much larger piano. Small enough to fit nicely into almost any room, this piano is handcrafted using the same materials and techniques that go into making our concert grand pianos.</p>';
echo preg_replace($pattern, '', $string);

?>
于 2012-07-02T13:41:10.150 に答える