关联数组值中的转义撇号

时间:2013-01-30 01:07:07

标签: php arrays apostrophe

我有一个从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' />";

2 个答案:

答案 0 :(得分:1)

  

条形斜线

到目前为止这是正确的。

  

由于输出进入表单输入

,这很复杂

这是一个不同的问题:您对HTML元素属性使用单引号,因此您不能在属性值中使用它们,如*。应始终使用htmlspecialchars对属性值进行转义(在这种情况下,您必须设置ENT_QUOTES标志)

*)您当前的HTML(已应用stripslashes)如下所示:

<input value='O'Reilly'>

Reilly'部分无效,因此被忽略,这会留下value='O'

答案 1 :(得分:0)

您需要循环遍历数组的每个元素并删除斜杠:

foreach ($arr as $key => $value) {
    $arr[$key] = stripslashes($value);
}