概述
preg_replace_callback()
— 执行一个正则表达式搜索并且使用一个回调进行替换
/***
* 匹配替换模版信息
* @param $template //要匹配的魔板信息
* @param $key_value_pair //要替换的内容
* @return string|null
*/
function message($template, $key_value_pair)
{
if(empty($template)) {
return null;
}
return preg_replace_callback("|{{([a-zA-Z_]+)}}|", function($matches) use ($key_value_pair) {
$key = $matches[1];
if(array_key_exists($key, $key_value_pair)){
return $key_value_pair[$key];
}
return $key.'?';
}, $template);
}
//Example
$template = 'Hello my name is {{name}}, I'm {{age}} years old';
$key_value_pair = array('name' => 'Lowemuo', 'age' => 18);
echo message($template,$key_value_pair);
在php手册里看到的另一种用法
$format = <<<SQL
CREATE DATABASE IF NOT EXISTS :database;
GRANT ALL PRIVILEGES ON :database_name.* TO ':user'@':host';
SET PASSWORD = PASSWORD(':pass');
SQL;
$args = ["database"=>"people", "user"=>"staff", "pass"=>"pass123", "host"=>"localhost"];
preg_replace_callback("/:(w+)/", function ($matches) use ($args) {
return @$args[$matches[1]] ?: $matches[0];
}, $format);
/*
Result:
CREATE DATABASE IF NOT EXISTS people;
GRANT ALL PRIVILEGES ON :database_name.* TO 'staff'@'localhost';
SET PASSWORD = PASSWORD('pass123');
The `:database_name` placeholder doesn't exist as a matching key in `$args` so it's returned as is.
This way you know you need to correct the array by adding the "database_name" item.
*/
最后
以上就是自觉电话为你收集整理的PHP-preg_replace_callback() 正则匹配模版信息并替换的全部内容,希望文章能够帮你解决PHP-preg_replace_callback() 正则匹配模版信息并替换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复