我正在编写此代码以从动态字符串键中删除值列表
//key
$chiave = "motore a scoppio di seconda generazione";
//sanitize string
//$chiave = pulisci($chiave);
//clean from double whitespaces
$chiave = preg_replace('/\s+/', ' ',$chiave);
//convert in lowercase
$chiave = strtolower($chiave);
//define array with all values to remove
$togliere = array("a","il","lo","la","egli","gli","li","di","do","e","è","alla","alle","&","un","uno","una");
$togliere2 = array("d'","l'");
//explode words
$keyval = explode(" ",$chiave);
//remove values
$keyvalclean = array_values(array_diff($keyval, $togliere));
//remove others values
$valori = array();
for($x=0; $x<=count($keyvalclean); $x++){
$valori[] = str_replace($togliere2,"",$keyvalclean[$x]);
}
//print the result
echo implode(" ",$valori);
这将输出&#34; motore scoppio seconda generazione&#34;
有一个更快,更优化的代码来做到这一点? 感谢
答案 0 :(得分:0)
您的代码对我来说没问题。但是,您不需要循环遍历数组以使用str_replace()
删除值。此函数可以将数组作为其参数,并在其中的每一个上执行替换一次性。
此:
$valori = array();
for($x=0; $x<=count($keyvalclean); $x++){
$valori[] = str_replace($togliere2,"",$keyvalclean[$x]);
}
可以改为:
$valori = str_replace($togliere2, "", $keyvalclean);
echo implode(" ",$valori);
答案 1 :(得分:0)
您可以使用此功能插入一个由""
替换的数组。