2017-12-04 21 views
-1

私のプロジェクトに翻訳語を追加しようとしています。しかし、str_replaceは機能しません。PHP str_replaceは、単語の翻訳には役に立たない

言語用のデータベーステーブルがあります。

ユーザーがこの言葉の例を参照のユーザーのために、その後英語を選びました場合:

英語:ムスタファは彼の友人アフメット今日で映画館に行ってきました。

ユーザは、例えばユーザのために、その後トルコを選びました場合は、この言葉を参照してください。

トルコ語:ILE birlikte sinemaya gitti アフメットarkadaşıムスタファbugünを。このような

私が使用しているstr_replace:

$splaceHolder = array("{{username}}", 
          "{{otherusername}}"); 

    $sname = array("<a href='".$base_url.$username."'>".$username."</a>", 
        "<a href='".$base_url.$otherusername."'>".$otherusername."</a>"); 

、ここstr_replace

$note = str_replace($splaceHolder, $sname, $lang['text'][$lang]); 

$lang['text'][$lang]は、言語テーブルとテキストから来ることは英語のためです:については

{{username}} went to the cinema with his friend {{otherusername}} today. 

トルコ語:

{{username}} bugün arkadaşı {{otherusername}} ile birlikte sinemaya gitti. 

str_replaceはここでは機能しません。それは英語の場合、この{{username}} went to the cinema with his friend {{otherusername}} today.このムスタファに示し

は彼の友人アフメット今日で映画館に行ってきました。このムスタファカントートルコこの{{username}} bugün arkadaşı {{otherusername}} ile birlikte sinemaya gitti.のためのショーのため

bugünarkadaşıアフメット ILE birlikte sinemaya gitti。

しかし、私は次のようになっています。

{{username}}さんは、友人{{otherusername}} と一緒に映画館に行きました。

+1

ちょっと前にこの質問をしませんでしたか? https:// stackoverflow。com/questions/47629103/language-translate-grammer – Andreas

+0

@Andreasこれはstr_replaceの質問ではありません。 – Azzo

+1

しかし答えはです。そして、あなたは彼の答えの "受け入れ"を取り除いただけです。 – Andreas

答えて

1

あなたの例ではstr_replaceが機能します。

はこれを試してみてください:

<?php 
    $string = "{{username}} went to the cinema with his friend {{otherusername}} today."; 

    $res = str_replace("{{username}}", "firstuser", $string); 
    $res = str_replace("{{otherusername}}", "seconduser", $res); 
    echo "result: ".$res."<br />"; 
?> 

も、あなたは両方を単一の行に置き換え実行することができます。私のために

$res = str_replace(["{{username}}", "{{otherusername}}"], ["firstuser", "seconduser"], $string); 

作品。

+0

はい問題はありません。しかし、テキストはテーブルから来て、その時起こっている問題です。 – Azzo

+0

次に、エンコーディングにいくつかの問題があるはずです。データベースがphpが使用するデフォルトのエンコーディングであるutf8になく、str_replaceを使用する前にデータベース文字列のエンコーディングを変更する必要があります。最初にあなたのデータベースを使っているエンコーディングを見つけてから、php iconv関数を見てください:http://php.net/manual/en/function.iconv.php – jeprubio

+0

gunaseelan答え: 'str_replace 'の代わりに' preg_replace'を試してみてください'私の問題を解決しました。だからあなたの答えはいいです、私もそれを試してみました。 – Azzo

関連する問題