уникальное ключевое слово в php, которое заменяется определенной переменной

я хочу функцию в php, которая заменяет какое-то уникальное слово с определенным значением.
т.е.

define("URL","http://example.com");
define("WEBSITE","Stackoverflow");
$string = "This is a dummy text with {URL} & name of website {WEBSITE}";

теперь я хочу вывод как:
Это фиктивный текст с http://example.com & название сайта Stackoverflow.

у меня есть функция, которая отлично работает с PHP 5.4

define("URL","http://example.com");
define("WEBSITE","Stackoverflow");
function magicKeyword($data) {
$URL = URL;
$SITENAME = WEBSITE;
return preg_replace('/\{([A-Z]+)\}/e', "$$1", $data);
}

но в php 5.5 они устарели модификатор / e.

Устарел: preg_replace (): модификатор / e устарел, вместо него используйте preg_replace_callback

Теперь, пожалуйста, помогите мне.

0

Решение

Функция обратного вызова используется следующим образом:

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);

Результат:

string (76) «Это фиктивный текст с http://example.com & название сайта Stackoverflow «

0

Другие решения

Почему вы не просто вернетесь $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_replace()

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);
1

По вопросам рекламы [email protected]