Передать несколько переменных Python в PHP

0

HTML

Это форма, которая принимает пользовательский ввод (url):

<form method="post" action="/" accept-charset="utf-8">
    <input type="search" name="url" placeholder="Enter a url" />
    <button>Go</button>
</form>

PHP (Laravel)

Этот контроллер сохраняет значение пользовательского ввода (url) в переменной для использования в скрипте python.

$url = Input::get('url');
$name = shell_exec('path/to/python ' . base_path() . '/test.py ' . $url);
return $name;

питон

Скрипт передает то, что вводит пользователь, и берет текст после косой черты и отображает его.

url = sys.argv[1]
name = url.split('/')[-1]
print(name)

Возвращаясь к PHP, он возвращает значение того, что было выполнено в скрипте Python. Если пользователь вводит url: http://example.com/file.png он успешно вернет строку file.png

Все об этом работает, но я понимаю, что я ограничиваю себя, так как команда shell_exec только собирается вставить строку, которая возвращается из скрипта python. Что мне нужно сделать, если я хочу вернуть несколько переменных?

Python в вопросе

url = sys.argv[1]
name = url.split('/')[-1]
test = "pass this text too!"
# ? what goes here ?

Поэтому HTML-страница должна теперь вернуть file.png и pass this text too!

Мне нужно вернуть массив или json в python, а затем извлечь массив /json в PHP?

ПРИМЕЧАНИЕ. В этих примерах я знаю об уязвимостях/инъекциях безопасности, это урезанные версии моего фактического кода.

  • 0
    Не совсем ответ на заданный вами вопрос, но если это проект более чем незначительной сложности, я бы порекомендовал использовать базу данных для взаимодействия между различными процессами. SQLite имеет очень мало накладных расходов и может творить чудеса, если все на одной машине.
  • 0
    @KalZekdor Вы можете уточнить, что вы имеете в виду? Что бы хранить в БД?
Показать ещё 2 комментария
Теги:
arrays

2 ответа

2
Лучший ответ

Вы можете вернуть массив, но убедитесь, что элементы не содержат разделителя. Как print(','.join(name, test)). Или вы можете кодировать json как json.dumps([name, test]), а затем анализировать json в PHP. Второй, конечно, лучше.

  • 1
    Я проголосовал, потому что я пропустил JSON! и я работаю с этим каждый день. позор мне: D
  • 0
    @HalayemAnis позор тебе: D
0

В этом случае ваш скрипт Python должен вернуть отформатированный ответ, что PHP-скрипт может правильно анализировать и определять переменные с их значениями
например, ваш код на Python должен возвращать что-то вроде этого:

file_name=file.png;file_extension=png;creation_date=1/1/2015;

После этого в вашем php-коде вы делаете необходимый материал

$varValues = explode(";", $PythonResult);
foreach($varValues as $vv) {
    $temp = explode("=", $vv);
    print 'Parameter : ' . $temp[0] . ' value : ' . $temp[1] . '<br />';
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню