Я беру китайские иероглифы из файла .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);
?>
Токовый выход:
产品
產品
囚徒 困境
不正当 竞争
То, что вы ищете, это PHP многобайтовые строковые функции, конкретно mb_ereg_replace
.
Я думаю, что фактическое утверждение, которое вы хотите, выглядит примерно так:
mb_ereg_replace ("~\s+~", '<br\>', $string);
Для того, чтобы использовать mb_ereg_replace
набор символов строки, которую вы читаете из файла, должен совпадать с набором символов PHP
использует. Если вы читаете ваш файл и выводите его в виде <pre>
тег, он отображает файл с правильными символами? Если нет, кодировка файла, вероятно, отличается от кодировки, используемой PHP.
Вы можете проверить это руководство на том, что вы используете utf8
или аналогичная кодировка. Как только это будет сделано, и вы знаете кодировку файла, вы можете использовать mb_convert_encoding (обязательно используйте HTML-ENTITIES
если это отправлено в браузер), чтобы преобразовать прочитанную строку в набор символов, который вы используете в PHP.
Я предполагаю, что вы можете использовать php string-array здесь.
Запустите цикл foreach для обхода всех строк, а затем используйте массив строк php.
foreach() //run for each line
{
$q = "不正当竞争";
for($i=0; $i <= strlen($q) - 1; $i++)
{
echo $q[$i] . "<br>";
}
}