как заменить местозаполнитель в строке?

Не очень уверен, как сформулировать этот вопрос, но я приведу пример. $ 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 .'!!!';