我有一个字符串,如:
Hello <%First Name%> <%Last Name%> welcome
我有一个数组
[0] => Array
(
[First Name] => John
[Last Name] => Smith
)
我需要做的是取字符串并将&lt;%中的单词替换为数组中的实际文本
所以我的输出将是
Hello John Smith welcome
我不知道如何实现这一目标,但我似乎无法用常规文本取代它
$test = str_replace("<%.*%>","test",$textData['text']);
很抱歉我应该提到数组键可能与<%First Name%>
所以它甚至可以是<%city%>
,数组可以是city=>New York
答案 0 :(得分:12)
$array = array('<%First Name%>' => 'John', '<%Last Name%>' => 'Smith');
$result = str_replace(array_keys($array), array_values($array), $textData['text']);
答案 1 :(得分:4)
您可以在str_replace
中使用数组搜索和替换变量$search = array('first_name', 'last_name');
$replace = array('John', 'Smith');
$result = str_replace($search, $replace, $string);
答案 2 :(得分:2)
$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
答案 3 :(得分:1)
您可以使用:
$result = preg_replace_callback('~<%(First|Last) Name)%>~', function ($m) {
return $yourarray[$m[1] . ' Name']; } ,$str);
或非常简单(可能更有效),使用Brian H.回答(并按<%First Name%>
和<%Last Name%>
替换搜索字符串。)
答案 4 :(得分:1)
您可以使用str_replace
$replacedKeys = array('<%First Name%>','<%Last Name%>');
$values = array('John','Smith');
$result = str_replace($replacedKeys,$values,$textData['text']);
答案 5 :(得分:1)
你能试试吗,
$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);
答案 6 :(得分:0)
echo ' Hello '.$array[0][First Name].' '.$array[0][Last Name].' welcome';
答案 7 :(得分:0)
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);