PHP字符串替换

时间:2011-07-21 11:00:43

标签: php

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

file config.php

$mystring = "hello my name is $name and i got to $school";

文件index.php

include('config.php');

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

echo $mystring;

这会有用吗?还是有更好的方法

4 个答案:

答案 0 :(得分:5)

$string = 'Hello, my name is %s and I go to %s';
printf($string, $_GET['name'], $_GET['school']);

$string = 'Hello, my name is :name and I go to :school';
echo str_replace(array(':name', ':school'), array($_GET['name'], $_GET['school']), $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);

答案 1 :(得分:3)

不,它不会起作用。

在将其用于另一个变量

之前,您必须首先定义$name

config.php应该看起来像

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

和index.php一样

<?php 
include('config.php');
echo $mystring;

你为什么不试试?

演示: http://sandbox.phpcode.eu/g/2d9e0.php?name=martin&school=fr.kupky

答案 2 :(得分:2)

或者,您可以像这样使用sprintf

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

答案 3 :(得分:-4)

这是有效的,因为你的$ mystring文字是使用双引号,如果你使用单引号,那么它将不起作用。

http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing