Есть у меня значит код... PHP: <?php if (get_magic_quotes_gpc()) { array_walk_recursive($_POST, create_function('$key, $val', '$_POST[$key] = stripslashes($val);')); } ?> Работает отлично, но... В случае передачи одинаковых данных Например $_POST['name'] = "vlad'son" $_POST['text'] = "vlad'son" код обрабатывает только 'name' и игнорирует 'text' Так это меня глючит или РНР ? (РНР-5.2.0)
Снкс, действительно меня переглючило (наверное с похмела писал), но теперь ты меня вообще запутал, почему тогда наоборот тоже обычно работает ?
Сделай print_r($_POST) после того array_walk --- там будет $_POST["vlad'son"] = "text"; т.е. работает, но не так как ожидается
Похоже разобрался, видимо во время array_walk он идёт не только по оригинальному массиву но и по тем "веткам" которые были созданы в процессе самого себя Код (Text): Array <-- до ( [text] => te\'st [name] => vlad\'son ) Array <-- после ( - шаг 1 - [te\'st] => text [vlad\'son] => name - шаг 2 - [te'st] => text [vlad'son] => name - шаг 3 - [text] => te'st [name] => vlad'son ) По началу удивился, думал что если код не верный то он вообще никак работать не будет, оказалось работает только "обходными путями"
Vladson, сори... теперь запутался я. Так что нужно-то было? чтобы стало: Код (Text): [text] => vlad\'son <-- слеш есть [name] => vlad'son <-- и его нету [vlad'son] => text ??? т.е. речь о том что не сработал stripslashes? вот что (и как) делал я: PHP: <?php $_POST['name'] = "vlad\\'son"; $_POST['text'] = "vlad'son"; if (get_magic_quotes_gpc()) { array_walk_recursive($_POST, create_function('$val,$key', '$_POST[$key]=stripslashes($val);')); } print_r($_POST); ?> Код (Text): Array ( [name] => vlad'son [text] => vlad'son ) (т.е. stripslashes честно отработал) но может я не то делал?