php如何将字符串作为变量使用

字符串如:aa.php?a=aa&b={id}&c={title}
变量为:$row=array('id'=>1,'title'=>'bb');
要实现将带{}的字符串直接替换为对应的数组值,相当于结果为:aa.php?a=aa&b=1&c=bb
备注:大概意思就是根据花括号{}里面的字符串匹配对应的数组值
最新回答
笨到忘不了

2024-02-05 12:46:54

如果要将

字符串
当变量使用最简单的方法就是替换:

例:

$a = "原字符串内容";
$b = "变量的值";
$c = "变量字符串";
$d = str_replace($c,$b,$a);//新值

从$a到$d,$c包含的字符串就相当于一个变量;不知道你明白没有!

伤-蔓延

2023-05-28 23:57:47

php如何将字符串作为变量来使用:

  1. 短字符串

        直接通过$str = '文本内容';来存储。

2.长字符串,并且换行的成大段落文本而且还有特殊字符的。

        $str = <<<longtxt

            文本内容“文本内容”/'文字内容'
            $<p>'&nbsp'这个一段很长的文本

            特殊的字符实体,需要转义的一些内容。
<<<longtxt;

退场

2020-05-26 11:05:04

楼上的正则也行,但是也可以这样(正则太慢了):

<?php
$str = 'aa.php?a=aa&b={id}&c={title}&d={';
$row = array( 'id' => '1', 'title' => 'bb', );
$tmp = '';
$key = '';
while (($pla = strpos($str, '{')) !== FALSE)
{
    $tmp .= substr($str, 0, $pla);
    $str  = substr($str, $pla + 1);
    if (($plb = strpos($str, '}')) === FALSE)
    {
        $tmp .= '{';
        continue;
    }
    $key = substr($str, 0, $plb);
    if (isset($row[$key]))
    {
        $tmp .= ((string) $row[$key]);
    }
    $str = substr($str, $plb + 1);
}
$str = $tmp;
unset($tmp, $key, $pla, $plb);

var_export($str); // $str 就是替换后的结果
?>

还有另一种算法:

<?php
$str = 'aa.php?a=aa&b={id}&c={title}';
$row = array( 'id' => '1', 'title' => 'bb' );
foreach ($row as $key => $val)
{
    $key = '{' . $key . '}';
    $len = strlen($key);
    if (($pla = strpos($str, $key)) === FALSE)
    {
        continue;
    }
    $str = substr($str, 0, $pla) . $val . substr($str, $pla + $len);
}
unset($key, $val, $pla, $len);
var_export($str); // $str 就是替换后的结果
?>

这样就可以了。

地球另一端的梦

2021-02-09 11:51:01

遍历数组逐个替换,下面的代码已测试通过过

<?php
$str = "aa.php?a=aa&b={id}&c={title}";
$row=array('id'=>1,'title'=>'bb');
foreach ($row as $name => $value) {
$str = str_replace("{".$name."}", $value, $str);
}
echo $str;
?>
作业君是个傲娇的东西

2024-04-22 16:13:34

用正则替换方法可以做到,看一下preg_replace()函数
追问
还请指教具体写法
追答
1,'title'=>'bb');
foreach ($row as $name => $value) {
$str = preg_replace("/{".$name."}/i", $value, $str);
}
echo $str;
?>