-5

我有一个值数组和一个字符串:

$arr = array('AAA', 'BBB', 'CCC'); 

我还有一个字符串,它可能具有数组中存在的值之一,尽管它的大写可能不同。

$str = 'Masasd asdsd Bbb asdasdas...';

我需要评估字符串,如果找到匹配项,将数组中的值与字符串中的值匹配,我需要将字符串中的值全部大写。很难把它放在一起。

我是否拆分字符串并评估每个值?...似乎应该有更好的方法。

if (in_array('Bbb', $arr)) {
    echo strtoupper('Bbb');
}

期望的结果:

$str = 'Masasd asdsd BBB asdasdas...';
4

2 回答 2

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在每个单词之前和之后循环并添加空格,然后像第一个示例一样运行它)

于 2013-06-18T23:14:05.187 回答
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);
于 2013-06-18T23:41:54.297 回答