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']);
对不起,我应该提到数组键可能会有所不同,<%First Name%>
所以它甚至可以是<%city%>
,数组可以是city=>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. 答案(并将搜索字符串替换为 <%First Name%>
和 <%Last Name%>
)。
【讨论】:
【参考方案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用数组中的值替换字符串的主要内容,如果未能解决你的问题,请参考以下文章