PHP用数组中的值替换字符串

Posted

技术标签:

【中文标题】PHP用数组中的值替换字符串【英文标题】:PHP replace string with values from array 【发布时间】:2014-02-01 17:09:46 【问题描述】:

我有一个字符串,例如:

   Hello <%First Name%> <%Last Name%> welcome

我有一个数组

 [0] => Array
    (
        [First Name] => John
        [Last Name] => Smith
    )

我需要做的是获取字符串并将

所以我的输出是

   Hello John Smith welcome

我不知道如何做到这一点,但我什至无法用常规文本替换它

$test = str_replace("<%.*%>","test",$textData['text']);

对不起,我应该提到数组键可能会有所不同,&lt;%First Name%&gt;

所以它甚至可以是&lt;%city%&gt;,数组可以是city=&gt;New York

【问题讨论】:

你不能在 str_replace 中做正则表达式,但你可以在 preg_replace 中做 然后使用array_keys() 并遍历它们? 【参考方案1】:
$array = array('<%First Name%>' => 'John', '<%Last Name%>' => 'Smith');
$result = str_replace(array_keys($array), array_values($array), $textData['text']);

【讨论】:

【参考方案2】:

您可以在 str_replace 中对搜索和替换变量使用数组

$search = array('first_name', 'last_name');
$replace = array('John', 'Smith');

$result = str_replace($search, $replace, $string);

【讨论】:

【参考方案3】:

你可以试试这个,

    $string ="Hello <%First Name%> <%Last Name%> welcome";
    preg_match_all('~<%(.*?)%>~s',$string,$datas);
    $Array = array('0' => array ('First Name' => 'John', 'Last Name' => 'Smith' ));
    $html =$string;
    foreach($datas[1] as $value)           
        $Html =str_replace($value, $Array[0][$value], $Html);
    
    echo str_replace(array("<%","%>"),'',$Html);

【讨论】:

【参考方案4】:

你可以使用str_replace

$replacedKeys = array('<%First Name%>','<%Last Name%>');

$values = array('John','Smith');

$result = str_replace($replacedKeys,$values,$textData['text']);

【讨论】:

【参考方案5】:
$string = "Hello <%First Name%> <%Last Name%> welcome";
$matches = array(
    'First Name' => 'John',
    'Last Name' => 'Smith'
);

$result = preg_replace_callback('/<%(.*?)%>/', function ($preg) use ($matches)  return isset($matches[$preg[1]]) ? $matches[$preg[1]] : $preg[0]; , $string);            

echo $result;
// Hello John Smith welcome

【讨论】:

【参考方案6】:

你可以用这个:

$result = preg_replace_callback('~<%(First|Last) Name)%>~', function ($m) 
    return $yourarray[$m[1] . ' Name'];  ,$str);

或者更简单(并且可能更有效),使用 Brian H. 答案(并将搜索字符串替换为 &lt;%First Name%&gt;&lt;%Last Name%&gt;)。

【讨论】:

【参考方案7】:
function temp_tag_replace($tag_start,$tag_end,$temp_array,$text)
      if(is_array($temp_array))
      $keys=array_keys($temp_array);
        foreach ( $keys as $key)
        $val=$temp_array[$key];
        $key=$tag_start.$key.$tag_end;
        $text=str_replace($key,$val,$text);
        
      
      return $text;
    

    $text='Hi %*Name*% %*Surname*%';
    $temp_array=array('Name'=>'Otto','Surname'=>'Man');
    $tag_start='%*';
    $tag_end='*%';

    echo temp_tag_replace($tag_start,$tag_end,$temp_array,$text);

【讨论】:

【参考方案8】:
echo ' Hello '.$array[0][First Name].' '.$array[0][Last Name].'  welcome';

【讨论】:

以上是关于PHP用数组中的值替换字符串的主要内容,如果未能解决你的问题,请参考以下文章

Jquery:用数组中的值替换字符串

PHP用数组中的字符串替换字符

PHP替换数组中的字符

php中有没有将数组的值转换为字符串的函数

PHP使用字符串替换从多维数组中的键值替换关键字

用 CSV 中的值替换字符串的一部分,将所有值保存在 CSV PYTHON