Задать вопрос
@89109983838

Как перекодировать \u041c (Русскую) на PHP, данные берутся из POST?

Добрый день!
В POST запросе содержатся русские буквы в ключах! при обработке данных результат не коретен ..скажем так!
(скрипт ищет товары по артикулу в базе данных и изменяет цену, но при наличии руской буквы в артикуле он его не находит! к примеру исходник 101302М, в POST запросе 101302\u041c
как перекодировать 101302\u041c обратно в исходное значение и отправить на обработку mysql?
(сутки бьюсь что-то ничего не выходит, весь гугл перешарил! )

$db = mysql_connect("localhost","user","pwd");
mysql_select_db('db', $db);
foreach($_POST as $key => $val) {
		if(mysql_num_rows(mysql_query("SELECT * from product WHERE model='$key' LIMIT 1"))>0){
			$query = mysql_query("UPDATE product SET price='$val' WHERE model='$key'");
			if (!$query){
				die('updating error'. mysql_error());
				}
			else { echo "  Успешно обновлено!!!"; }
			}
		else { echo "  Такой артикул не найден!!!"; }
		
		echo "\n";
				}
?>


Кстати POST запрос отправляет приложение Python с помощью библиотеки requests)

...
data = {}
data[key] = price
data[key2] = price2
...
session = requests.Session()
r = session.post('http://site.ru/pricepr.php', data=data)
print(r.text)
  • Вопрос задан
  • 1927 просмотров
Подписаться 1 Оценить 2 комментария
Решения вопроса 1
@89109983838 Автор вопроса
Попробовал:
(1833А и 1846A в первом артикуле русская А, оба в базе данных есть проверил на всякий случай)
в mysql база, таблица, строка с актикулом в utf8_general_ci

echo $key;
$keys = html_entity_decode(str_replace('\u','&#x',$key), ENT_NOQUOTES,'UTF-8');
echo " = ";
echo $keys;


в POST:
"1833\u0410": 19315.25,
"1846A": 31129.4375,

Ответ php скрипта обратно приложению:
1833А = 1833А Такой артикул не найден!!!
1846A = 1846A Успешно обновлено!!!

Чтож не так???
Пошел в админку сайта и переписал артикула по новой, только брал не из прайсов EXCEL, а капировал прямо и ответа скрипта PHP (1833А = 1833А Такой артикул не найден!!!), Внешне вроде все тоже самое но малоли!
И правда - поле проделанной операции - скрипт начал находить позиции по артикулам с русскими буквами и успешно их обновлять!

Притом без всяких перекодировок, значит при копировании из EXCEL копипастом - получается крякозабра в базе данных
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@danforth
json_decode() пробовали?
Ответ написан
@Omutik
PHP laravel developer
Попробуйте так:
$str = "101302\u041c";
echo html_entity_decode(str_replace('\u','&#x',$str), ENT_NOQUOTES,'UTF-8');//выводит 101302М
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы