1

次のように、MySQLテーブルから動的に構築される連想配列があります。

array(['p.id'] => 3, ['p.fname'] => 'Bill', ['p.lname'] => 'O\'Reilly')

これは大きなアレイであり、ここに入るには長すぎるという理由でこのように構築されました。ご覧のとおり、問題は、['p.lname']の値にアクセスしようとすると、「O\」が返されることです。

アレイの構築方法を変更せずにこれを回避する方法について誰かがアイデアを持っていますか?現在、回避策としてスラッシュと内部アポストロフィを削除していますが、アポストロフィをそのままにして、スラッシュを削除することをお勧めします。

これは、出力が次のような形式の入力になるという事実によって複雑になります。

$field = "<input type='text' name='$input_unique_id' style='width:$width;' value='$array_value' />";
4

2 に答える 2

1

ストリップスラッシュ

これまでのところそうです。

これは、出力がフォーム入力になるという事実によって複雑になります

これは別の問題です。HTML要素の属性に一重引用符を使用しているため、そのような属性値では使用できません*。属性値は常にエスケープする必要があります(この場合はフラグhtmlspecialcharsを設定する必要があります)ENT_QUOTES

*)現在のHTML(stripslashes適用済み)は次のようになります。

<input value='O'Reilly'>

Reilly'パーツが無効であるため無視されます。value='O'

于 2013-01-30T01:12:45.527 に答える
0

配列の各要素をループして、スラッシュをそのまま削除する必要があります。

foreach ($arr as $key => $value) {
    $arr[$key] = stripslashes($value);
}
于 2013-01-30T01:11:11.987 に答える