php - 插件的php字符串条件检查
问题描述
我在 Wordpress 的 wp all import 插件中有这个函数来导入产品,它采用第一个值并重命名为第二个值,一个简单的映射函数。
我只想插入一个条件来检查字符串,如果不在那个字符串上,那么新字符串将是 $cat=uncategorized>$cat 换句话说,如果我的字典中没有,例如 $cat=cars 然后我想替换未分类>汽车
function cat_change($cat){
$cat = str_replace("XLARGE", "XL", $cat);
$cat = str_replace("xl", "XL", $cat);
$cat = str_replace("extralarge", "XL", $cat);
$cat = str_replace("XXL", "2XL", $cat);
$cat = str_replace("2XLARGE", "2XL", $cat);
$cat = str_replace("2large", "2XL", $cat);
$cat = str_replace("2xlarge", "2XL", $cat);
$cat = str_replace("XXXL", "3XL", $cat);
$cat = str_replace("3XLARGE", "3XL", $cat);
$cat = str_replace("3large", "3XL", $cat);
$cat = str_replace("3xlarge", "3XL", $cat);
return $cat;
}
解决方案
首先,您可以将数组传递给,str_replace
以便所有这些行都可以在一个中完成。
然后,您可以使用$find
数组和explode()
搜索使用来检查字符串中存在的in_array()
至少一个单词$find
$cat
function cat_change($cat){
$find = ['XLARGE', 'xl','extralarge', 'XXL', '2XLARGE', '2large', '2xlarge', 'XXXL', '3XLARGE', '3large', '3xlarge'];
$replace = ['XL','XL','XL', '2XL', '2XL','2XL','2XL','3XL','3XL','3XL','3XL'];
$allwords = explode(' ', $cat);
$found = FALSE;
foreach ($find as $word){
if (in_array($word, $allwords)){
$found = true;
break;
}
}
if (!$found){
return 'something else';
}
$cat = str_replace($find, $replace, $cat);
return $cat;
}
$input = 'The quick XLARGE fox jumped over the 2XLARGE moon';
echo $input . PHP_EOL;
echo cat_change($input);
结果
The quick XLARGE fox jumped over the 2XLARGE moon
The quick XL fox jumped over the 2XL moon
或使用其中没有任何查找值的输入
$input = 'The quick fox jumped over the moon';
echo $input . PHP_EOL;
echo cat_change($input);
结果是
The quick fox jumped over the moon
something else
推荐阅读
- remote-desktop - 如何通过任何地方的自动化从远程桌面中打开的浏览器中克隆对象?
- git - 如何在 git 中添加新的子模块
- angular - 如果元素上的指令/输入名称之间存在冲突怎么办?
- python - 如何使用 Python 从 excel 文件中提取 OLE 表
- c# - 如何为此 SQL 语句构建 LINQ?
- python - 从列表中删除多余的括号
- maven - 需要运行 Maven 作业时,Jenkins JNLP slave 卡在进度条上
- ios - Carthage 版本兼容补丁
- c - 程序在无限循环中停止并给我一个分段错误
- xamarin - CarouselView.FormsPlugin 获取特定页面的索引