我有一个值数组和一个字符串:
$arr = array('AAA', 'BBB', 'CCC');
我还有一个字符串,可能有一个值存在于数组中,尽管它可能大写不同。
$str = 'Masasd asdsd Bbb asdasdas...';
我需要评估字符串,如果找到匹配,将数组中的值与字符串中的值进行比较,我需要在字符串中使用全部大写字母。难以把它放在一起。
我是否拆分字符串并评估每个值?...似乎应该有更好的方法。
if (in_array('Bbb', $arr)) {
echo strtoupper('Bbb');
}
期望的结果:
$str = 'Masasd asdsd BBB asdasdas...';
答案 0 :(得分:1)
使用str_ireplace()
替换字符串中的不区分大小写。
在你的情况下:
编辑:没有循环就更好了,现在你的数组也可以包含小写:
<?php
$str= str_ireplace($arr, array_map('strtoupper',$arr) , $str);
?>
(假设$arr
中的所有值都是大写的例子)
根据Mark的说明添加修复:
<?php
foreach($arr as $value){
$str= str_ireplace(' '.$value.' ', ' '.strtoupper($value).' ' , $str);
}
?>
(您也可以循环$arr
并在每个单词之前和之后添加空格,然后按照第一个示例运行它)
答案 1 :(得分:1)
我可能会做这样的事情,只是一种不同的方法:
$values = explode(' ', $str);
$lower = array_map('strtolower', $values);
foreach ($arr as $value) {
if ($key = array_search(strtolower($value), $lower)) {
$values[$key] = $value;
}
}
$str = implode(' ', $values);