я хочу функцию в 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
Теперь, пожалуйста, помогите мне.
Функция обратного вызова используется следующим образом:
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 «
Почему вы не просто вернетесь $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);