Разделение и отображение отдельных китайских иероглифов в переполнении стека

Я беру китайские иероглифы из файла .csv и отображаю их в HTML через PHP, с большими трудностями, получая их непосредственно из .csv. Я скопировал их в .txt и мне стало легче работать с данными, у моего hanzi_characters.txt несколько сотен линии строки в этом примере:

hanzi_characters.txt

产品

產品

囚徒困境

不正当竞争

Что мне нужно, и я не могу понять, как это сделать правильно, так это показать по одной ханци в каждой строке, например:

Я попытался использовать циклы foreach с str_split () и explode (), так как считается строкой, но выводит только .

Перед тем, как иссякли идеи, я также попробовал использовать array_chunk () и array_slice (), но, как и ожидалось, результат был таким же, как и использование этих методов.

Я тоже пробовал это решение назначение $s = parts[0]; но не мог заставить это работать ни

Прямо сейчас это мой код:

Index.php

<?php

$myfile = fopen("hanzi_characters.txt", "r") or die("Unable to open file!");

while (!feof($myfile)) {
$printed = fgets($myfile);
$parts = preg_split('/[\\s,]/u', $printed);
$echo parts[0];
}
fclose($myfile);

?>

Токовый выход:

产品

產品

囚徒 困境

不正当 竞争

0

Решение

PHP многобайтовые строковые функции

То, что вы ищете, это PHP многобайтовые строковые функции, конкретно mb_ereg_replace.

Я думаю, что фактическое утверждение, которое вы хотите, выглядит примерно так:

 mb_ereg_replace ("~\s+~", '<br\>', $string);

Проверьте набор символов PHP

Для того, чтобы использовать mb_ereg_replaceнабор символов строки, которую вы читаете из файла, должен совпадать с набором символов PHP использует. Если вы читаете ваш файл и выводите его в виде <pre> тег, он отображает файл с правильными символами? Если нет, кодировка файла, вероятно, отличается от кодировки, используемой PHP.

Вы можете проверить это руководство на том, что вы используете utf8 или аналогичная кодировка. Как только это будет сделано, и вы знаете кодировку файла, вы можете использовать mb_convert_encoding (обязательно используйте HTML-ENTITIES если это отправлено в браузер), чтобы преобразовать прочитанную строку в набор символов, который вы используете в PHP.

0

Другие решения

Я предполагаю, что вы можете использовать php string-array здесь.
Запустите цикл foreach для обхода всех строк, а затем используйте массив строк php.

foreach() //run for each line
{
$q = "不正当竞争";
for($i=0; $i <= strlen($q) - 1; $i++)
{
echo $q[$i] . "<br>";
}
}
0