php 用大写单词替换描述中的特定单词并循环遍历它
php replace specific words in a description with uppercase words and loop through it
需要用大写搜索词替换针对数组测试的字符串中所有存在的词。
我现在卡在正确的循环中了。
我的代码:
$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);
}
}
实际结果:
“以硬质小麦为基础的小麦面包卷和鸡蛋配以核桃奶油和榛子酱与 Dinkelflocken.Weizenbr 以硬质小麦为基础的面包更美味,以鸡蛋为基础的核桃奶油和榛子酱与以 Dinkelflocken.Weizenbr 硬质小麦为基础的面包更美味,并且鸡蛋配核桃奶油和榛子酱更美味 Dinkelflocken.Weizenbr硬质小麦小鸡和鸡蛋配核桃奶油和榛子酱更美味 Dinkelflocken.Weizenbr硬粒小麦小鸡和鸡蛋配核桃奶油和榛子酱更美味搭配 SPELLED 薄片更美味。
期望的结果:
以硬粒小麦和鸡蛋为基础的小麦卷搭配核桃奶油和榛子酱,搭配 SPELLED 薄片更美味。
一种方法是用要替换的字符串制作一个正则表达式,然后使用 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;
需要用大写搜索词替换针对数组测试的字符串中所有存在的词。
我现在卡在正确的循环中了。
我的代码:
$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);
}
}
实际结果: “以硬质小麦为基础的小麦面包卷和鸡蛋配以核桃奶油和榛子酱与 Dinkelflocken.Weizenbr 以硬质小麦为基础的面包更美味,以鸡蛋为基础的核桃奶油和榛子酱与以 Dinkelflocken.Weizenbr 硬质小麦为基础的面包更美味,并且鸡蛋配核桃奶油和榛子酱更美味 Dinkelflocken.Weizenbr硬质小麦小鸡和鸡蛋配核桃奶油和榛子酱更美味 Dinkelflocken.Weizenbr硬粒小麦小鸡和鸡蛋配核桃奶油和榛子酱更美味搭配 SPELLED 薄片更美味。
期望的结果:
以硬粒小麦和鸡蛋为基础的小麦卷搭配核桃奶油和榛子酱,搭配 SPELLED 薄片更美味。
一种方法是用要替换的字符串制作一个正则表达式,然后使用 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;