Php 单引号中的变量

Php 单引号中的变量,php,Php,我有一个密码: $str = 'some code'; $String = 'Some params , This is {$str}'; $String = str_replace('\'', "\"", $String); $array = explode(',', $String); var_dump($array); 结果: ' This is {$str}' 如果不在$string='some params,This is{$str}'中使用双引号,如何获取字符串'This

我有一个密码:

$str = 'some code';
$String = 'Some params  , This is  {$str}';
$String = str_replace('\'', "\"", $String);
$array = explode(',', $String);

var_dump($array);
结果:

' This is  {$str}'
如果不在
$string='some params,This is{$str}'中使用双引号,如何获取字符串
'This some code'
? 有什么功能吗?str_replace不起作用

编辑: 上面的代码就是一个例子。我的代码的一个特例。 我的意思是像这样的代码:

$str1 = 'some code 1';
$str2 = 'some code 2';
$str3 = 'some code 3';
$str = '{$str1}  ...  {$str2} ... {$str3}  ';
$result = preg_match_all('/({\$\S*})/',$str,$res);

foreach ($res[0] as $value){
    $arr_replace = ['{$','}'];
    $value_replaced = str_replace($arr_replace, "",$value);
    $str = str_replace($value,$$value_replaced,$str);
}
var_dump($str);

有更简单的方法吗?

为了获取变量,您可以执行以下四种操作之一:

  • 双引号

    $str = 'some code';
    $String = "Some params  , This is  {$str}";
    
  • 显然,您不想这样做,因此我们将选择方案2:

  • 串联

    $str = 'some code';
    $String = 'Some params  , This is  ' . $str;
    
  • str\u替换
    正如@Nick所指出的:

    $String = str_replace('{$str}', $str, $String);
    
  • herdeoc

    $str = 'some code';
    $String = <<<EOT
    Some params  , This is $str
    EOT;
    
    $str='some code';
    
    $String=要获取变量,可以执行以下四项操作之一:

  • 双引号

    $str = 'some code';
    $String = "Some params  , This is  {$str}";
    
  • 显然,您不想这样做,因此我们将选择方案2:

  • 串联

    $str = 'some code';
    $String = 'Some params  , This is  ' . $str;
    
  • str\u替换
    正如@Nick所指出的:

    $String = str_replace('{$str}', $str, $String);
    
  • herdeoc

    $str = 'some code';
    $String = <<<EOT
    Some params  , This is $str
    EOT;
    
    $str='some code';
    
    $String=我不明白你为什么需要这个,但是你可以试试我的代码

    您也可以使用
    str\u replace

    <?php
    
    $str = 'some code';
    
    $String = 'Some params  , This is  {$str}';
    
    $String = preg_replace('/{\$str}/',$str ,$String);
    
    //$String = str_replace('{$str}',$str ,$String);
    
    $array = explode(',', $String);
    
    var_dump($array);
    
    

    我不明白你为什么需要这个,但你可以试试我的代码

    您也可以使用
    str\u replace

    <?php
    
    $str = 'some code';
    
    $String = 'Some params  , This is  {$str}';
    
    $String = preg_replace('/{\$str}/',$str ,$String);
    
    //$String = str_replace('{$str}',$str ,$String);
    
    $array = explode(',', $String);
    
    var_dump($array);
    
    
    使用此

    $String = 'Some params  , This is '.$str;
    
    代替

    $String = 'Some params  , This is  {$str}';
    
    用这个

    $String = 'Some params  , This is '.$str;
    
    代替

    $String = 'Some params  , This is  {$str}';
    

    双引号有什么问题吗?您可以使用
    $String=str_replace('{$str}',$str,$String)实际上还有更复杂的代码。我从数组中获取$String变量。单引号中有一个值。此选项适用于此特定情况,但此字符串中可能有一个动态变量名。看起来好像您正在寻找模板引擎的形式-查找{$…}位并使用。。。查找并替换变量。双引号有什么问题吗?可以使用
    $String=str_replace(“{$str},$str,$String)实际上还有更复杂的代码。我从数组中获取$String变量。单引号中有一个值。此选项适用于此特定情况,但此字符串中可能有一个动态变量名。看起来好像您正在寻找模板引擎的形式-查找{$…}位并使用。。。查找变量并替换它。