替换str中的值

时间:2013-06-18 23:08:08

标签: php

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

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

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

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

我需要评估字符串,如果找到匹配,将数组中的值与字符串中的值进行比较,我需要在字符串中使用全部大写字母。难以把它放在一起。

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

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

期望的结果:

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

2 个答案:

答案 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);