php用大写单词替换描述中的特定单词并循环遍历它

需要用大写搜索词替换针对数组进行测试的字符串中所有存在的词。


我现在陷入了正确的循环。


我的代码:


   $array = [

        'weizen',

        'dinkel',

        'gerste',

        'khorasan',

        'eier',

        'haselnuss',

        'walnuss'];


   $description = "Weizenbrötchen auf Hartweizenbasis und Eiern mit Walnusscreme und Haselnusspaste sind leckerer mit Dinkelflocken."


foreach($array as $item) {

if (strpos($description, $item) !== false) {

   // $description;

 echo 

 str_replace($item, mb_strtoupper($item), $description);   

}

}

实际结果: “硬粒小麦面包和鸡蛋配核桃奶油和榛子酱比拼拼薄片更美味。硬粒小麦面包和鸡蛋配核桃奶油和榛子酱配拼拼薄片更美味。硬粒小麦面包和鸡蛋配拼拼薄片核桃奶油和榛子酱搭配斯佩耳特薄片更美味.


期望的结果:


以硬粒小麦和鸡蛋为基础的小麦卷配上核桃奶油和榛子酱,配上 SPELLED 薄片更美味。


手掌心
浏览 83回答 2
2回答

慕尼黑的夜晚无繁华

一种方法是从要替换的字符串中创建一个正则表达式,然后使用preg_replace_callback将任何匹配的值转换为大写:$array = [        'weizen',        'dinkel',        'gerste',        'khorasan',        'eier',        'haselnuss',        'walnuss'];$description = "Weizenbrötchen auf Hartweizenbasis und Eiern mit Walnusscreme und Haselnusspaste sind leckerer mit Dinkelflocken.";$pattern = '/' . implode('|', $array) . '/iu';echo preg_replace_callback($pattern, function ($m) { return mb_strtoupper($m[0]); }, $description);输出:WEIZENbrötchen auf HartWEIZENbasis und EIERn mit WALNUSScreme und HASELNUSSpaste sind leckerer mit DINKELflocken.

冉冉说

使用array_map将原始数组转换为大写并准备模式,然后使用preg_replace它:$array = [        'weizen',        'dinkel',        'gerste',        'khorasan',        'eier',        'haselnuss',        'walnuss'];  $description = "Weizenbrötchen auf Hartweizenbasis und Eiern mit Walnusscreme und Haselnusspaste sind leckerer mit Dinkelflocken.";  $replaces = array_map(function($v){ return strtoupper($v);}, $array);  $patterns = array_map(function($v){ return '/'.$v.'/i';},$array);  $str = preg_replace($patterns,$replaces,$description);  echo $str;
打开App,查看更多内容
随时随地看视频慕课网APP