PHP 模板字符串中的字段替换

PHP 模板字符串中的字段替换

/**
 * note: 字符串中的模板变量替换
 * @auther: kinra
 * @time: 2024/8/8
 * @param string $content
 * @param array $params
 * @param string $paramsPatternRegex
 * @param string $templateFieldPrefix
 * @param string $templateFieldSuffix
 * @return string
 */
function replaceStrContent(
     string $content,
     array $params,
     string $paramsPatternRegex = '/\${[a-zA-Z0-9_]*}/',
     string $templateFieldPrefix = '${',
     string $templateFieldSuffix = '}'
 ): string {
     $numericalParamsDealFun = function ($content, $params) use ($paramsPatternRegex) {
         $matches = [];
         preg_match_all($paramsPatternRegex, $content, $matches);
         return str_replace($matches[0], $params, $content);
     };

     $replace = [];
     foreach ($params as $key => $val) {
         $replace[$templateFieldPrefix . $key . $templateFieldSuffix] = $val;
     }

     $replacedContent = strtr($content, $replace);

     if ($replacedContent !== $content) {
         $content = $replacedContent;
     } else {
         $content = $numericalParamsDealFun($content, $params);
     }

     return $content;
 }

函数输出示例

 $content = '你好, ${name}, 很高兴在 ${date} 这一天在 ${where} 见到你。';
 $conten2 = '你好, :<name>, 很高兴在 :<date> 这一天在 :<where> 见到你。';
 $params = ['name' => '张三', 'date' => '2024-09-01', 'where' => '上海'];
 echo replaceStrContent($content, $params) . PHP_EOL; 
 // 输出:你好, 张三, 很高兴在 2024-09-01 这一天在 上海 见到你。
 
 echo replaceStrContent($content, array_values($params)) . PHP_EOL; 
 // 输出:你好, 张三, 很高兴在 2024-09-01 这一天在 上海 见到你。
 
 echo replaceStrContent($conten2, $params, '/:<[a-zA-Z0-9_]*>/') . PHP_EOL; 
 // 输出:你好, 张三, 很高兴在 2024-09-01 这一天在 上海 见到你。
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值