我的数组:
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匹配的单词?这样我就可以得到一个新的字符串:
动物不是人类,我的女人在家里
预先感谢
答案 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
我认为这对您会有所帮助。