希腊字母编码错误

时间:2017-11-19 10:13:39

标签: php

我想显示一个希腊短语,即我希望将每个字母显示在另一个字母上,如果是两个字我想要这个输出

var manu = "Hallo";
if (manu === "Hallo") { // ; Remove here
    console.log("It Works Bro"); // And added here
}
else {
    console.log("Nope Sir"); // And here
}

我使用此代码:

Κ Η
Α Ρ
Λ Θ
Ω Ε
Σ Σ

但我得到了这个输出:

<?php
$str = "HELLO HOW YA DOING WORLD?";

$strWords          = explode(' ', $str);
$strLettersRowsArr = array_map('str_split', $strWords);

$maxRows = 0;
foreach ($strLettersRowsArr as $lettersArr) {
    if (count($lettersArr) > $maxRows) {
        $maxRows = count($lettersArr);
    }
}

foreach ($strLettersRowsArr as $key => &$lettersArr) {
    while (count($lettersArr) < $maxRows) {
        $lettersArr[] = ' ';
    }
}
unset($lettersArr);

$strLettersColumnsArr = [];
for ($row = 0; $row < $maxRows; $row++) {
    $strLettersColumnsArr[] = array_column($strLettersRowsArr, $row);
}

// Print out letter columns.
foreach ($strLettersColumnsArr as $lettersColumnArr) {
    foreach ($lettersColumnArr as $letter) {
        echo "$letter ";
    }
    echo "\n";
}
?>

1 个答案:

答案 0 :(得分:1)

希腊字母 - 多字节。这就是问题的原因。

你可以解决它:

替换它:

$strLettersRowsArr = array_map('str_split', $strWords);

由:

$strLettersRowsArr = array_map(function($word) { return preg_split('##u', $word, -1, PREG_SPLIT_NO_EMPTY); }, $strWords);