也许这是一个愚蠢的问题,但我有这个脚本:
<script language="javascript">
document.write('<a class="white-link" href="?s=' + geoip_city() + '">¿Estás en ' + geoip_city() +'?</a>');
</script>
我只是想使用strtr删除“geoip_city()”的所有字符的重音符号。通常我知道怎么做但是我不太确定这次,因为它是一个脚本。我总是使用它来删除重音:
<?php
$text = " ";
$trans = array("á" => "a", "é" => "e", "í" => "i", "ó" => "o", "ú" => "u");
echo strtr($text, $trans);
?>
我该怎么做?
如果不清楚请询问。
非常感谢
答案 0 :(得分:0)
您需要在javascript中重新实现(至少是基本版本)strtr
PHP函数。该函数非常简单,您接受将原始映射到new的转换表,然后将原始值的所有实例替换为各自的新值。
function trans(text, table) {
for(var i = 0; i < table.length; i++) {
var entry = table[i];
text = text.replace(new RegExp(entry[0], 'g'), entry[1]);
}
return text;
}
您可以直接使用它:
var $trans = [
['a','b'],
['c','d']
];
alert(trans('acdc cats pajamas', $trans));
就像我说的,trans
功能相当简单。它迭代所提供的转换表中的每个条目,并将条目中的第一个元素转换为正则表达式。它将其转换为正则表达式(使用new RegExp
)的原因是'g'
选项,它允许您替换每个匹配,而不是仅替换第一个匹配。
在您的确切情况下使用它的示例方法:
<script>
function trans(text, table) {
for(var i = 0; i < table.length; i++) {
var entry = table[i];
text = text.replace(new RegExp(entry[0], 'g'), entry[1]);
}
return text;
}
var trans_table = [
["á", "a"],
["é", "e"],
["í", "i"],
["ó", "o"],
["ú", "u"]
];
var geoip_city_trans = trans(geoip_city(), trans_table);
document.write('<a class="white-link" href="?s=' + geoip_city_trans + '">¿Estás en ' + geoip_city_trans +'?</a>');
</script>
注意:我建议将翻译表和实际的trans
函数放在此页面中包含的外部脚本中,而不是将其定义到要打印锚点的位置。 / p>