如何查找和更改出现在与数组匹配的字符串上的单词

时间:2018-07-11 04:27:54

标签: php string multidimensional-array

我的数组:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => cat
            [tag] => animal
        )

    [1] => Array
        (
            [id] => 3
            [name] => cat women
            [tag] => human
        )

)

我的字符串

$string = 'cat is not cat women, my women at home';

如何查找和更改出现在$ string上与$ array匹配的单词?这样我就可以得到一个新的字符串:

  

动物不是人类,我的女人在家里

预先感谢

2 个答案:

答案 0 :(得分:2)

我的版本
    

$array = [['name' => 'cat', 'tag' => 'animal'], ['name' => 'cat women', 'tag' => 'human']];
$string = 'cat is not cat women, my women at home';

usort($array, function($a, $b) { // first sort by length of varchar
    return strlen($a['name']) < strlen($b['name']);
});

$string = str_replace( array_column($array, "name"), array_column($array, "tag"), $string);

echo $string;

输出:动物不是人类,我的女人在家里

答案 1 :(得分:1)

请尝试以下逻辑:

$arrrrr = array
(
    "0" => array
        (
            "id" => 1,
            "name" => "cat",
            "tag" => "animal"
        ),

    "1" => array
        (
            "id" => 3,
            "name" => "cat women",
            "tag" => "human"
        )

);

$string = "cat is not cat women, my women at home";
foreach($arrrrr as $sarr){
  $pos = strpos($string, strtolower($sarr['name']));
    if($pos !==false){          
       $string =  substr_replace($string,$sarr['tag'],$pos,strlen($sarr['name']));

    }
}
echo $string;

输出:

animal is not human, my women at home

我认为这对您会有所帮助。