PHP Unicode str_replace显示空白

时间:2013-07-26 20:57:51

标签: php string unicode

我正在创建一个简单的网页,用于翻译我正在制作的语言的字母。

以下是它的工作原理:

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>

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您对str_repalce字母使用str_replace而不是Č

修复你的拼写错误,它会再次运作。


减少代码大小(str_replace也接受数组):

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

下次:写在php代码的顶部:

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

这有助于您找到错误。

答案 1 :(得分:1)

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

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