2011-01-06 7 views
0

は、多分それは愚かな質問ですが、私は、このスクリプトを持っている:PHPでスクリプトの出力を変更するにはどうすればよいですか?

<script language="javascript"> 
document.write('<a class="white-link" href="?s=' + geoip_city() + '">¿Estás en ' + geoip_city() +'?</a>'); 
</script> 

を、私は単に「()geoip_city」strtrを使用してのすべての文字のアクセントを削除したいです。通常、私はそれを行う方法を知っていますが、スクリプトなので今回はあまりよく分かりません。私はいつもアクセントを削除するためにこれを使います:

<?php 
$text = " "; 
$trans = array("á" => "a", "é" => "e", "í" => "i", "ó" => "o", "ú" => "u"); 
echo strtr($text, $trans); 
?> 

どのようにしたらいいですか?

明らかでない場合は、お尋ねください。

どうもありがとう

+0

'geoip_city()'はJavaScript関数ですか?もしそうなら、javascriptで翻訳機能を再実装する必要があります。難しくありません。 –

+0

ありがとう、私は今それに近づいています。それは私がコードを検索しようとするWordPressのプラグインです。私は都市を取得するためのショートコード「[mmjs-city]」も持っています。 PHPでそれをスタイルすることはできますか?それともスクリプトを変更する必要がありますか? – lisovaccaro

+0

私の答えはあなたのために働いたのですか? –

答えて

0

あなたは(少なくとも、基本バージョン)JavaScriptでstrtr PHP関数再実装する必要があります。この関数はかなりシンプルです。オリジナルを新しいものにマップする変換テーブルを受け入れ、元の値のすべてのインスタンスを新しい値に置き換えます。

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機能を有することをお勧め、対アンカーを印刷する場所を定義します。

+0

本当に完全な答えをありがとう! – lisovaccaro

+0

@ Liso22:問題ありません。ただのために自分の役割をしようとしています。 –

関連する問題