Не очень уверен, как сформулировать этот вопрос, но я приведу пример. $ string = 'Привет, $ name. Как дела?'; Когда я отправляю эту строку, $ name не изменяется. Как я могу сделать это, чтобы я мог поместить что-то вроде + name +, чтобы оно менялось. я пробовал использовать его, но я не знаю, что искать, поэтому мне не повезло. это, наверное, очень просто, но я просто затушевываю. благодаря
Вы можете использовать держатели мест и str_replace
. Или используйте встроенный sprintf
PHP и используйте %s
. (И с версии 4.0.6 вы можете поменять порядок аргументов, если хотите).
$name = 'Alica'; // sprintf method: $format = 'Hello, %s!'; echo sprintf($format, $name); // Hello, Alica! // replace method: $format = "Hello, {NAME}!"; echo str_replace("{NAME}", $name, $format);
И, для всех, кто задавался вопросом, я понял, что это проблема с шаблоном строкой, а не с интегрированной конкатенацией / разбором PHP. Я просто беру на себя этот ответ, хотя, поскольку я все еще не уверен на 100%, это намерение OP
Вы должны обертывать строку в двойных кавычках ( "
), если вы хотите расширить переменные:
$name = "Alica"; $string = "Hey, $name. How are you?"; // Hey, Alica. How are you?
См. Документацию .
Я всегда был поклонником strtr
.
$ php -r 'echo strtr("Hi @name. The weather is @weather.", ["@name" => "Nick", "@weather" => "Sunny"]);' Hi Nick. The weather is Sunny.
Другим преимуществом этого является то, что вы можете определить разные типы префикса-заполнителя. Вот как это делает Drupal; @
указывает строку, которая должна быть экранирована как безопасная для вывода на веб-страницу (чтобы избежать инъекций). Команда format_string пересекает ваши параметры (такие как @name
и @weather
), и если первый символ является @
, то он использует check_plain
для значения.
Третье решение, не лучше или хуже, чем упомянутое выше, является конкатенацией:
echo 'Hello '. $name .'!!!';