У меня есть ассоциативный массив, который динамически создается из таблицы 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' />";
стрижка
Это правда до сих пор.
Это осложняется тем, что выход переходит в форму ввода
И это другая проблема: вы используете одинарные кавычки для атрибутов элемента HTML, поэтому вы не можете использовать их в значении атрибута, подобном этому *. Значения атрибутов всегда должны быть экранированы с помощью htmlspecialchars
(в этом случае вам необходимо установить флаг ENT_QUOTES
)
*) ваш текущий HTML (с применяемыми stripslashes
) выглядит следующим образом:
<input value='O'Reilly'>
Часть Reilly'
недействительна и, таким образом, игнорируется, это оставляет value='O'
Вам нужно пройти через каждый элемент массива и разбить черты как таковые:
foreach ($arr as $key => $value) { $arr[$key] = stripslashes($value); }