是否可以str_replace()
在替换中使用和使用功能?
$value = "gal($data)";
$replace = str_replace($dat, $value, $string);
gal($data)
是一个函数,我需要为这个函数替换一个代码并显示,但脚本最终只给了我 this gal($data)
,函数没有显示什么
是否可以str_replace()
用于替换代码并用函数或类似方法替换?
是否可以str_replace()
在替换中使用和使用功能?
$value = "gal($data)";
$replace = str_replace($dat, $value, $string);
gal($data)
是一个函数,我需要为这个函数替换一个代码并显示,但脚本最终只给了我 this gal($data)
,函数没有显示什么
是否可以str_replace()
用于替换代码并用函数或类似方法替换?
PHP 有一个名为的函数preg_replace_callback
来执行此操作。当您向它传递一个回调函数时,它将通过您的函数传递每个匹配项。您可以根据匹配的值选择替换或忽略它。
例如,假设我有一个匹配各种字符串的模式,例如[a-z]+
. 我可能不想用相同的值替换每个实例,所以我可以在找到匹配项时调用一个函数,并确定我应该如何响应:
function callback ($match) {
if ($match[0] === "Jonathan")
return "Superman";
return $match[0];
}
$subject = "This is about Jonathan.";
$pattern = "/[a-z]+/i";
$results = preg_replace_callback($pattern, "callback", $subject);
// This is about Superman.
echo $results;
请注意,在我们的回调函数中,我如何能够为某些匹配项返回特殊值,而不是所有匹配项。
另一个例子是查找。假设我们想找到编程语言的缩写,并用它们的完整名称替换它们。我们可能有一个以缩写作为键,以长名称作为值的数组。然后我们可以使用我们的回调功能来查找全长名称:
function lookup ($match) {
$langs = Array(
"JS" => "JavaScript",
"CSS" => "Cascading Style Sheets",
"JSP" => "Java Server Pages"
);
return $langs[$match[0]] ?: $match[0];
}
$subject = "Does anybody know JS? Or CSS maybe? What about PHP?";
$pattern = "/(js|css|jsp)/i";
$results = preg_replace_callback($pattern, "lookup", $subject);
// Does anybody know JavaScript? Or Cascading Style Sheets maybe? What about PHP?
echo $results;
所以每次我们的正则表达式找到一个匹配,它通过匹配lookup
,我们可以返回适当的值,或者原始值。