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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php如何将字符串作为变量使用相关的知识,希望对你有一定的参考价值。

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

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

例:

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

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

参考技术A

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

    短字符串

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

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

        $str = <<<longtxt

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

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

参考技术B

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

<?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 就是替换后的结果
?>

这样就可以了。

参考技术C

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

<?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;
?>

参考技术D 用正则替换方法可以做到,看一下preg_replace()函数追问

还请指教具体写法

追答

1,'title'=>'bb');
foreach ($row as $name => $value)
$str = preg_replace("/".$name."/i", $value, $str);

echo $str;
?>

如何使用php在xpath中使用变量作为属性值?

这有效

$feed = $xml->xpath('//room[@id="103"]');

我试图用变量103替换$id。我试过了

$feed = $xml->xpath('//room[@id=$id]');

$feed = $xml->xpath('//room[@id=".$id."]');

没有工作。

将变量放在xpath中的适当语法是什么?

答案

当你在字符串中编写$id时,php会像字符串一样使用它。你应该关闭引用

$feed = $xml->xpath('//room[@id="'.$id.'"]');

或者在{}中写变量

$feed = $xml->xpath('//room[@id="{$id}"]');
另一答案

你的问题已经从穆罕默德回答,但我在行尾给出了一个更完整的例子[0],以避免更多的行用于某些用法

$feed = $xml->xpath('//room[@id="'.$id.'"])[0];

另外,如果你想要xml的结果和其他一些值在使用@attribute的根里面

$day= $_GET['Day']; 
$feed = $xml->xpath('//room[@id="'.$id.'"]/Day'.$day.'')[0];

这意味着如果你有一个像更难的代码的xml文件,你可以一天动态

以上是关于php如何将字符串作为变量使用的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串里的变量作为PHP代码命令执行

如何使用php在xpath中使用变量作为属性值?

使用 jquery ajax 将 javascript 数组变量发送到 php 脚本(获取字符串作为输出而不是数组)

如何以在 php 中作为字符串回显的形式填充单选按钮?

php if else条件在变量中作为字符串[重复]

将视图(php文件)作为字符串传递给yii 2中registerJS中的变量js