пытаюсь связать python с php, а именно - внедрить нейронные сети в сайт.
вызываю из php скрипт таким образом:
$x = shell_exec("python C:/Users/mx/script.py \"".$_POST["text"]."\" 2>&1");
echo($x);
в script.py написано следующее:
import sys
tx = sys.argv[1]
tx = tx.lower()
print(tx)
в итоге я вижу текст вида �����, но если я уберу строку tx = tx.lower()
, то текст вернётся в нужной кодировке, так как я его вписал на странице. любые русские буквы превращаются в знаки вопроса, остальные символы отображаются нормально.
при этом непосредственно из cmd
всё работает как надо.
можно, конечно, подготовить текст в php, но, думаю, это не совсем правильно.
как получить текст в нормальной кодировке после обработки в python?
и ещё вопрос по поводу сброса вывода, мне в php нужна лишь последняя строка, т.е. непосредственно результат работы сети. я обложился функциями сброса:
sys.stdout.flush()
print(tx, flush=True)
sys.stdout.flush()
sys.exit()
однако всё равно возвращается лишняя строка: Using TensorFlow backend.
, причём после вывода print()
. как правильно получать от скрипта только нужные данные?
разобрался.
cmd работает в cp1251
, php в UTF-8
.
что бы нормально работало надо перед запуском shell_exec
перекодировать текст в cp1251
, иначе они будут иметь разную длину (при тестах из php и cmd текст выводился одинаково, однако len(text) показывал 10 для php, и 5 для cmd).
так же, для вывода нам надо перекодировать всё обратно, иначе мы будем видеть те самые �����.
$tx = iconv("UTF-8", "cp1251", $_POST["text"]);
$cmd = "python C:/Users/mx/script.py \"".$tx."\" 2>&1";
$x = shell_exec($cmd);
$x = iconv("cp1251", "UTF-8", $x);
echo($x);
помните что shell_exec
потенциально опасная функция, всегда проверяйте то, что вы ей передаёте
Я, конечно, понимаю, что curl - это вообще законная вещьНо в один прекрасный момент какой-то пользователь сайта сделал цикл, который отправляет...
Никак не могу понять что собой представляет $this в PHP ООПВроде бы и ясно, а вроде бы и нет, объясните кто может, зарание спасибо на ответ!
Допустим у меня есть файл с куками, сгенерированный с помощью curlКак мне в отдельной функции можно обратиться к ссылке, используя эти же куки?Юзерагент...
Сразу оговорюсь, я дилетант, а не программист, задаю вопрос с целью понимания сутиЕсть страница status