PHP字符串替换

PHP字符串替换,php,Php,我希望有一个字符串包含例如(mystring): 文件config.php $mystring = "hello my name is $name and i got to $school"; file index.php include('config.php'); $name = $_GET['name']; $school = $_GET['school']; echo $mystring; 这样行吗?或者有什么更好的方法吗?不,不行 在另一个变量中使用它之前,必须先定义$name

我希望有一个字符串包含例如(mystring):

文件config.php

$mystring = "hello my name is $name and i got to $school";
file index.php

include('config.php');

$name = $_GET['name'];
$school = $_GET['school'];

echo $mystring;
这样行吗?或者有什么更好的方法吗?不,不行

在另一个变量中使用它之前,必须先定义
$name

php应该像

<?php
$name = htmlspecialchars($_GET['name']);
$school = htmlspecialchars($_GET['school']);
$mystring = "hello my name is $name and i got to $school";
不,它不起作用

在另一个变量中使用它之前,必须先定义
$name

php应该像

<?php
$name = htmlspecialchars($_GET['name']);
$school = htmlspecialchars($_GET['school']);
$mystring = "hello my name is $name and i got to $school";

或者,您可以这样使用:

$mystring = "hello my name is %s and i got to %s";
// ...
printf($mystring, $name, $school);

或者,您可以这样使用:

$mystring = "hello my name is %s and i got to %s";
// ...
printf($mystring, $name, $school);

您可以通过以下方式自动完成最后一项:

function value_replace($values, $string) {
    return str_replace(array_map(function ($v) { return ":$v"; }, array_keys($values)), $values, $string);
}

$string = 'Hello, my name is :name and I go to :school';
echo values_replace($_GET, $string);

您可以通过以下方式自动完成最后一项:

function value_replace($values, $string) {
    return str_replace(array_map(function ($v) { return ":$v"; }, array_keys($values)), $values, $string);
}

$string = 'Hello, my name is :name and I go to :school';
echo values_replace($_GET, $string);

这是因为您的$mystring文本使用双引号,如果您使用单引号,那么它将不起作用


这是因为$mystring文本使用了双引号,如果使用了单引号,那么它将不起作用


确实如此,因为$mystring是在定义$name和$school之前定义的,PHP会在定义时替换这些值,而不是在输出时。当然,但我只是在区分“确实如此,因为$mystring是在定义$name和$school之前定义的,PHP会在定义时替换这些值,而不是在输出时。当然,但我只是在区分“和‘除了函数名之外,答案很好,
值\u replace
:自1990年以来,函数名中的下划线已被禁用:D@yes123:否(至少不是在PHP中)。不要将函数与方法混淆;)[/offtopic]@是的,这完全取决于您遵循的PHP命名标准。请随意重命名此函数的版本。你不会只是复制粘贴它,对吧?对吧?;P@deceze:实际上,我不会在这里复制/粘贴任何内容:D@KingCrunch:您的观点可能很好(下划线表示函数,camelCase表示方法),但我还是喜欢camelCase中的所有内容。这样,您就可以很容易地识别函数是php内置的还是用户自定义的答案,除了函数名
values\u replace
:D自1990年以来,函数名中的下划线被禁止使用:D@yes123:否(至少不是在PHP中)。不要将函数与方法混淆;)[/offtopic]@是的,这完全取决于您遵循的PHP命名标准。请随意重命名此函数的版本。你不会只是复制粘贴它,对吧?对吧?;P@deceze:实际上,我不会在这里复制/粘贴任何内容:D@KingCrunch:您的观点可能很好(下划线表示函数,camelCase表示方法),但我还是喜欢camelCase中的所有内容。这样,您就可以很容易地识别函数是php内置函数还是用户自制函数