1
swordmaster 2022-05-19 08:55:23 +08:00
把双引号换成单引号
|
2
IceBay 2022-05-19 08:57:52 +08:00
用的双引号,被解析成变量值,换成单引号。
|
3
pota 2022-05-19 09:05:36 +08:00
echo str_replace("{{$title}}", "$tit", $string);
|
4
tangknox1 OP @IceBay 单引号也试了下,因为 {$title} 是 CMS 程序里模板引擎的数据调用标签,并且我试了下转义 比如 \{ 也不行。
|
6
lizuoqiang 2022-05-19 09:11:53 +08:00
$string = '高清贴图将《{$title}》 PC 版的画面';
$tit = '战车 2'; echo str_replace('{$title}', $tit, $string); |
7
IceBay 2022-05-19 09:12:27 +08:00
@tangknox1 #4 说说你想要的输出结果是什么?
>>> $string = '高清贴图将《{$title}》 PC 版的画面'; => "高清贴图将《{$title}》 PC 版的画面" >>> $tit = '战车 2'; => "战车 2" >>> str_replace('{$title}', '$tit', $string); => "高清贴图将《$tit 》 PC 版的画面" >>> str_replace('{$title}', $tit, $string); => "高清贴图将《战车 2 》 PC 版的画面" |
8
pota 2022-05-19 09:16:46 +08:00
绝了 没细看 你的$title 不是变量啊
echo str_replace("{\$title}", "$tit", $string) .PHP_EOL; echo str_replace('{$title}', "$tit", $string) .PHP_EOL; 正常情况下都会输出 => 高清贴图将《战车 2 》 PC 版的画面 |
9
tangknox1 OP @pota {$title} 是在文本内容里包含出现的,但是,同时这个 {$title} 又是 CMS 程序里模板引擎的一个标题调用标签,所以我要把他替换成别的。意思就是,必须把 {$title} 转换为文本类型然后用别的替换掉
|
10
tangknox1 OP @IceBay 哥,你们单独一个 PHP 文件里测试,肯定没问题,但是 {$title} 虽然是输出的文本内容,可 {$title} 同时也是我这套程序的模板引擎里的一个标题调用标签 {$title} 可以直接输出当前文章的标题。所以必须把这个{$title} 转为文本,然后用别的替换掉。
|
11
gesse 2022-05-19 09:34:44 +08:00
|
12
tangknox1 OP @gesse $string 中的文本里出现的 {$title} 同时也是我程序里模板引擎的一个数据标签,所以,我在模板里替换{$title},程序会把它当作数据调用标签,只能想法删除掉他并改成别的 '{$title}' 是不行的,'{$title', 只能这样,去掉后面那个 } ,才行。
|
13
tangknox1 OP 感谢各位,,我用 echo $str = preg_replace("/\{[^\}]+\}/", "$tit", $string); 正则过滤了 花括号和里面内容,这样搞定了
|
14
gesse 2022-05-19 09:51:03 +08:00 2
兄弟你如果年龄大于等于 28 岁,我觉得你可以转下产品或者其他岗位。
|
15
gesse 2022-05-19 09:53:17 +08:00
真心的,我 10 年前开过培训学校,学生上千人, 现在保持联系的也很多。
从一些细枝末节我能知道一个人适不适合干程序。 |
16
tangknox1 OP @gesse 嘿嘿兄弟,我就没学过 PHP ,帖子里我也说了,小白一个,偶尔需要修改下程序里的代码,都是直接百度搜下案例,照着弄,也没看过什么 PHP 手册啥的。所以问的问题挺小白的。
|
17
zpfhbyx 2022-05-19 11:06:57 +08:00
试试 strtr?
|
18
fuchish112 2022-05-20 13:35:18 +08:00
<?php
/** * 用上下文信息替换记录信息中的占位符 */ function interpolate($message, array $context = array()) { // 构建一个花括号包含的键名的替换数组 $replace = array(); foreach ($context as $key => $val) { // 检查该值是否可以转换为字符串 if (!is_array($val) && (!is_object($val) || method_exists($val, '__toString'))) { $replace['{' . $key . '}'] = $val; } } // 替换记录信息中的占位符,最后返回修改后的记录信息。 return strtr($message, $replace); } // 含有带花括号占位符的记录信息。 $message = "User {username} created"; // 带有替换信息的上下文数组,键名为占位符名称,键值为替换值。 $context = array('username' => 'bolivar'); // 输出 "User bolivar created" echo interpolate($message, $context); |