我为我的例子做了这个简短的代码。真正的要大得多。我需要的是这个strtr采取第一次出现和停止,因为性能的原因,因为真正的一个更大。
目前的结果是"La Libertad2“,它应该是”拉利伯塔德“,并停止,因为它找到了比赛,而不是尝试其余的选项。
这将减轻服务器上的一些负载。
如果有其他方法可以做到的话,那是值得欢迎的。
$citygen = "Lalibertad";
$transformarciudades = array("Sanmartin" => "San Martín", "Lalibertad" => "La Libertad", "Lalibertad" => "La Libertad2");
$citygen = strtr($citygen,$transformarciudades);
echo $citygen; //result La Libertad2发布于 2022-07-14 03:11:00
这里有一个想法,不是使用strtr,而是在替换上循环,检查是否存在匹配字符串,如果找到,就替换它,然后从循环中分离出来。
<?php
$citygen = "Once in Lalibertad, always in Lalibertad";
$transformarciudades = array("Sanmartin" => "San Martín", "Lalibertad" => "La Libertad");
foreach($transformarciudades as $t => $v) {
if (($p = strpos($citygen, $t)) !== false) {
$citygen = substr($citygen, 0, $p) . $v . substr($citygen, $p + strlen($t));
break;
}
}
echo $citygen; // Once in La Libertad, always in Lalibertad我不确定这是否正是您所追求的,但是您可以修改算法以复制strtr,而无需继续搜索匹配项。
在循环使用$transformarciudades之前,您可能需要以其他方式对它进行排序,但这应该有效。
https://stackoverflow.com/questions/72974668
复制相似问题