如何用php修改脚本的输出?

时间:2011-01-06 04:41:26

标签: php javascript scripting

也许这是一个愚蠢的问题,但我有这个脚本:

<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);
?>

我该怎么做?

如果不清楚请询问。

非常感谢

1 个答案:

答案 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>