2013-07-26 86 views
0

我正在創建一個簡單的網頁翻譯字母之間的語言,我正在做。PHP Unicode str_replace顯示空白

下面是它如何工作的:

PHP頁面檢查,看看是否有是羅馬字母「X」,並與我的語言對應的西裏爾字母替換它。它工作正常,但在我完成添加所有的字母后,它停止工作。現在輸出顯示爲空白。

這裏是我的代碼:

<?php 
header('content-type: text/html;charset=utf8'); 
mb_language('uni'); 
mb_internal_encoding('UTF-8'); 
?> 
<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" href="/font/stylesheet.css"/> 
<title>Roman Corstek To Cyrillic Corstek</title> 
</head> 
<body style="font-family: 'dejavusans', sans-serif"> 
<h1>Roman Corstek To Cyrillic Corstek</h1> 
<p>This webpage uses the font 'DejaVu Sans', unless your browser does not support web fonts (all modern web browsers do) because it renders Cyrillic Corstek Glyphs the best, and because it's free and doesn't come with a restrictive <a href="http://www.fontsquirrel.com/license/DejaVu-Sans">license</a>. If you would like to download a copy for yourself click <a href="http://www.fontsquirrel.com/fonts/DejaVu-Sans">here</a>.</p> 
<p>Enter your roman text below:</p> 
<form action="cyrillic-roman.php"> 
<textarea cols="50" rows="10" name="roman"> 
</textarea> 
<br/> 
<input type="submit"> 
</form> 
<?php 
if($_GET['roman'] != "") 
{ 
?> 
<h2>Conversion:</h2> 
<p><b>You entered:</b></p> 
<p><?php echo $_GET['roman']; ?></p> 
<p><b>Which in the Cyrillic Corstek Alphabet is:</b></p> 
<p> 
<?php 
$output = $_GET['roman']; 

//A With Macron 
$output = str_replace("Ā", "Ă", $output); 
$output = str_replace("ā", "ă", $output); 

//B 
$output = str_replace("B", "Б", $output); 
$output = str_replace("b", "б", $output); 

//V 
$output = str_replace("V", "В", $output); 
$output = str_replace("v", "в", $output); 

//G 
$output = str_replace("G", "Г", $output); 
$output = str_replace("g", "г", $output); 

//D 
$output = str_replace("D", "Д", $output); 
$output = str_replace("d", "д", $output); 

//Π
$output = str_replace("Œ", "Ё", $output); 
$output = str_replace("œ", "ё", $output); 

//Ž 
$output = str_replace("Ž", "Ж", $output); 
$output = str_replace("ž", "ж", $output); 

//Í 
$output = str_replace("Í", "И", $output); 
$output = str_replace("í", "и", $output); 

//J 
$output = str_replace("J", "Й", $output); 
$output = str_replace("j", "й", $output); 

//K 
$output = str_replace("K", "К", $output); 
$output = str_replace("k", "к", $output); 

//L 
$output = str_replace("L", "Л", $output); 
$output = str_replace("l", "л", $output); 

//M 
$output = str_replace("M", "М", $output); 
$output = str_replace("m", "м", $output); 

//N 
$output = str_replace("N", "Н", $output); 
$output = str_replace("n", "н", $output); 

//Ó 
$output = str_replace("Ó", "Ŏ", $output); 
$output = str_replace("ó", "ŏ", $output); 

//E 
$output = str_replace("E", "Э", $output); 
$output = str_replace("e", "э", $output); 

//Ŋ 
$output = str_replace("Ŋ", "Ң", $output); 
$output = str_replace("ŋ", "ң", $output); 

//Ñ 
$output = str_replace("Ñ", "Н̆", $output); 
$output = str_replace("ñ", "н̆", $output); 

//P 
$output = str_replace("P", "П", $output); 
$output = str_replace("p", "п", $output); 

//R 
$output = str_replace("R", "Р", $output); 
$output = str_replace("r", "р", $output); 

//Ů 
$output = str_replace("Ů", "У", $output); 
$output = str_replace("ů", "у", $output); 

//F 
$output = str_replace("F", "Ф", $output); 
$output = str_replace("f", "ф", $output); 

//S 
$output = str_replace("S", "Ц", $output); 
$output = str_replace("s", "ц", $output); 

//Č 
$output = str_repalce("Č", "Ч", $output); 
$output = str_replace("č", "ч", $output); 

//Š 
$output = str_replace("Š", "Ш", $output); 
$output = str_replace("š", "ш", $output); 

//H 
$output = str_replace("H", "Һ", $output); 
$output = str_replace("h", "һ", $output); 

//Þ 
$output = str_replace("Þ", "Ө", $output); 
$output = str_replace("þ", "ө", $output); 

//Q 
$output = str_replace("Q", "Қ", $output); 
$output = str_replace("q", "қ", $output); 

//U 
$output = str_replace("U", "Ұ", $output); 
$output = str_replace("u", "ұ", $output); 

//W 
$output = str_replace("W", "Ю", $output); 
$output = str_replace("w", "ю", $output); 

//Ď 
$output = str_replace("Ď", "Ь", $output); 
$output = str_replace("ď", "ь", $output); 

//Ť 
$output = str_replace("Ť", "Ъ", $output); 
$output = str_replace("ť", "ъ", $output); 

//Ī 
$output = str_replace("Ī", "V", $output); 
$output = str_replace("ī", "v", $output); 

//É 
$output = str_replace("É", "Ѣ", $output); 
$output = str_repalce("é", "ѣ", $output); 

//Y 
$output = str_replace("Y", "Е", $output); 
$output = str_replace("y", "е", $output); 

//Ğ 
$output = str_replace("Ğ", "Җ", $output); 
$output = str_repalce("ğ", "җ", $output); 

//Z 
$output = str_replace("Z", "З", $output); 
$output = str_replace("z", "з", $output); 





echo $output; 
?> 
<?php 
} 
?>\ 
</body> 
</html> 

我在做什麼錯?

+0

不知道問題出在哪裏,但我建議只是將數組中的搜索/替換值傳遞給'str_replace()' - 這將消除重複執行此函數的需要。至於你的實際問題,你有沒有做過任何嘗試調試,看看你的'$ output'的值與你的期望值有什麼不同? –

回答

1

對於字母Č,您使用函數str_repalce而不是str_replace

只要修復你的錯字,它會再次工作。


爲了減少您的代碼尺寸(str_replace也接受陣列):

$output = str_replace(array("Ā", "ā", ...), array("Ă", "ă", ...), $output); 

在接下來的時間:寫在你的PHP代碼的頂部:

ini_set("display_errors", "On"); 
error_reporting(-1); 

這將幫助你找到你的錯誤。

+1

哇。我覺得*非常*愚蠢。 – Igor

1

而不是多次使用str_replace,所有字符只能使用strtr一次。

$from = "ĀāBbVvGgDdŒœŽžÍíJjKkLlMmNnÓóEeŊŋPpRrŮůFfSsČ芚HhÞþQqUuWwĎĪīÉéYyĞğZz"; 
$to = "ĂăБбВвГгДдЁёЖжИиЙйКкЛлМмНнŎŏЭэҢңПпРрУуФфЦцЧчШшҺһӨөҚқҰұЮюЬьЪъVvѢѣЕеҖҗЗз"; 
$text = strtr($text, $from, $to); 
+0

我想我會在開發我的西里爾文 - >羅馬轉換器時使用它。 – Igor