我是靠谱客的博主 自觉电话,最近开发中收集的这篇文章主要介绍PHP-preg_replace_callback() 正则匹配模版信息并替换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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() 正则匹配模版信息并替换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部