php中替换为已定义变量的唯一关键字

php中替换为已定义变量的唯一关键字,php,preg-replace,deprecated,Php,Preg Replace,Deprecated,我想要一个php函数,用定义的值替换一些唯一的单词。 i、 e 现在我希望输出为: 这是一个虚拟文本,带有网站Stackoverflow的名称(&N) 我有一个与PHP5.4配合良好的函数 define("URL","http://example.com"); define("WEBSITE","Stackoverflow"); function magicKeyword($data) { $URL = URL; $SITENAME = WEBSITE; return preg_replace(

我想要一个php函数,用定义的值替换一些唯一的单词。 i、 e

现在我希望输出为: 这是一个虚拟文本,带有网站Stackoverflow的名称(&N)

我有一个与PHP5.4配合良好的函数

define("URL","http://example.com");
define("WEBSITE","Stackoverflow");
function magicKeyword($data) {
$URL = URL;
$SITENAME = WEBSITE;
return preg_replace('/\{([A-Z]+)\}/e', "$$1", $data);
}
但在PHP5.5中,他们不赞成使用/e修饰符

不推荐使用:preg\u replace():不推荐使用/e修饰符,请改用preg\u replace\u回调


现在请帮助我。

为什么不直接从函数返回
$string

define("URL","http://example.com");
define("WEBSITE","Stackoverflow");
function magicKeyword() {
  $URL = URL;
  $SITENAME = WEBSITE;
  $string = "This is a dummy text with $URL & name of website $SITENAME";
  return $string;
}
echo magicKeyword(); //This is a dummy text with http://example.com & name of website Stackoverflow 
或者使用
str\u replace()


回调函数的使用方式如下:

define("URL","http://example.com");
define("WEBSITE","Stackoverflow");

$string = "This is a dummy text with {URL} & name of website {WEBSITE}";

function magicKeyword($data) {
    return preg_replace_callback('/\{([A-Z]+)\}/', "magicKeywordCallback", $data);
}

function magicKeywordCallback($matches) {
    if (defined($matches[1]))
        return constant($matches[1]);
    // otherwise return the found word unmodified.
    return $matches[0];
}

$result = magicKeyword($string);
var_dump($result);
结果:

字符串(76)“这是一个虚拟文本,带有网站Stackoverflow的名称(&N)”


尝试使用
str\u replace
您需要一个arrayOMG循环。它简单又短。非常感谢杰拉尔德·施耐德。非常感谢你。
define("URL","http://example.com");
define("WEBSITE","Stackoverflow");
$string = "This is a dummy text with {URL} & name of website {WEBSITE}";
function magicKeyword($string) {
$URL = URL;
$SITENAME = WEBSITE;
$string = str_replace(array('{URL}', '{WEBSITE}'), array($URL, $SITENAME), $string);
return $string;
}
echo magicKeyword($string);
define("URL","http://example.com");
define("WEBSITE","Stackoverflow");

$string = "This is a dummy text with {URL} & name of website {WEBSITE}";

function magicKeyword($data) {
    return preg_replace_callback('/\{([A-Z]+)\}/', "magicKeywordCallback", $data);
}

function magicKeywordCallback($matches) {
    if (defined($matches[1]))
        return constant($matches[1]);
    // otherwise return the found word unmodified.
    return $matches[0];
}

$result = magicKeyword($string);
var_dump($result);