powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Замена . на _ в $_POST
11 сообщений из 11, страница 1 из 1
Замена . на _ в $_POST
    #39674118
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Может вопрос и очень глупый, но ответа на него так и не нашел(
в форме имена поле имеют такой формат : name="insurerPersonForm.lastName"
При отправке формы, приходит $_POST['insurerPersonForm_lastName'] =
Вывожу print_r в самом верху, до подлючения каких либо файлов.

пытаюсь пронать пост массив через функцию в которой заменяю _ на . на выходе получаю пустой массив (не присваюиваются ключи с .)

Но при этом делаю выборку из базы в ней поля имеют такие-же имена, массив с точками живет и все норм.
например: $data['insurerPersonForm.lastName'] содержит значения, с ним можно работать.

В чем может быть проблема?
При этом на другом сайте форма с такими-же именами (почти у всех Страховых одинакомые имена), все работает, charles отлавливает что пост отправляется с ., а не _
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674122
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhenekпытаюсь пронать пост массив через функцию в которой заменяю _ на . на выходе получаю пустой массив (не присваюиваются ключи с .)Покажите код, которым пытаетесь сделать замену.
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674126
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zhenekв форме имена поле имеют такой формат : name="insurerPersonForm.lastName"
При отправке формы, приходит $_POST['insurerPersonForm_lastName'] =Строго говоря, это не совсем так. При отправке браузер отправляет точки как есть. А преобразование точки в подчеркивание делает PHP и об этом есть упоминание в документации: http://php.net/manual/ru/language.variables.external.php Замечание:

Точки и пробелы в именах переменных преобразуется в знаки подчеркивания. Например, <input name="a.b" /> станет $_REQUEST["a_b"].
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674133
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
Вот, для теста набросал на вентилятор вот так)
Код: php
1.
2.
3.
4.
5.
6.
7.
function format_m($in){
    foreach($in as $a=>$b){
        $a = str_repplace('_','.',$a);
        $result[$a]=$b;
    }
    return $result;
}


Обычные ключи проходят, а с "." нет
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674142
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сдается мне, что-то не так с вентилятором. Да и функцию Вы не удосужились протестировать. А то бы заметили лишнюю букву "p" в str_repplace(). Ладно, протестирую за Вас. Код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
$ cat ./t.php
<?php
function format_m($in){
    foreach($in as $a=>$b){
        $a = str_replace('_','.',$a);
        $result[$a]=$b;
    }
    return $result;
}

$_POST['insurerPersonForm_lastName'] = 'test';

var_dump(format_m($_POST));


Рзультат выполнения:
Код: php
1.
2.
3.
4.
5.
$ php -f ./t.php
array(1) {
  ["insurerPersonForm.lastName"]=>
  string(4) "test"
}



Что не так?
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674147
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleЧто не так?

Мой косяк( из-за буквы "р".
Я когда тестировал комментировал это строку. Странно, что php ошибку не выдал.
Проблема решена)) , спасибо)
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674152
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhenekЯ когда тестировал комментировал это строку.Гхм... А зачем? Эта строчка отражает саму суть оной функции.
ZhenekСтранно, что php ошибку не выдал.Странные у Вас настройки PHP. Возможно, Вы просто не хотите видеть его сообщения об ошибках. После копипаста Вашего кода при первом запуске было сообщение:
Код: php
1.
2.
$ php -f ./t.php
PHP Fatal error:  Call to undefined function str_repplace() in /home/vk/t.php on line 4
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674170
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторГхм... А зачем? Эта строчка отражает саму суть оной функции.

Я понимаю))) я перед этим тестировал кучу других вариантов, мне нужно было понять природу этих замен. а т.к. потом сформированный массив мне нужно отправить на другой сервер, то возможно и нет смысла меня т.к. у них должны быть такие-же изменения, но нет, у них вроде как на ASP.net крутится все.
Вообщем к этой функции я пришел уже в конце и до сих пор считаю такой вариант не самым удачным т.к. помимо таких проблем, с именами с точкой не хочет работать jquery.validator.

Вообщем уже в суматохе я и проглядел, что опечатался( мой косяк(
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674187
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZhenekВообщем к этой функции я пришел уже в конце и до сих пор считаю такой вариант не самым удачным т.к. помимо таких проблем, с именами с точкой не хочет работать jquery.validator.ПМСМ символ точки довольно часто является служебным (таким же, же как плюс, минус, слеш, амперсанд, кавычки и т.д.). В этом смысле лучше по возможности воздержаться от его использования в именах вовсе.
Кроме того, внутренний механизм преобразования имен в PHP не позволяет простым способом однозначно восстановить исходное имя поля - неизвестно, что там было до замены (пробел или точка) или вовсе не было никакого преобразования.
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674204
Zhenek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkleZhenekВообщем к этой функции я пришел уже в конце и до сих пор считаю такой вариант не самым удачным т.к. помимо таких проблем, с именами с точкой не хочет работать jquery.validator.ПМСМ символ точки довольно часто является служебным (таким же, же как плюс, минус, слеш, амперсанд, кавычки и т.д.). В этом смысле лучше по возможности воздержаться от его использования в именах вовсе.
Кроме того, внутренний механизм преобразования имен в PHP не позволяет простым способом однозначно восстановить исходное имя поля - неизвестно, что там было до замены (пробел или точка) или вовсе не было никакого преобразования.

Спасибо за разъяснения. Наверно откажусь от такого именования, заменю его сразу на _ и перед отправкой на сервер просто 1 раз прогоню через функцию и заменю на "."
...
Рейтинг: 0 / 0
Замена . на _ в $_POST
    #39674259
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем глобальный и тайный смысл использовать именно точку в именах полей?
В мускуле это традиционно служебный символ, отделяющий имена базы.таблицы.поля. В PHP в ряде случаев это десятичный разделитель, с которым есть некоторые особенности в именах ключей массива.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Замена . на _ в $_POST
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]