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 回答