在PHP中拆分和回显单个汉字

时间:2015-07-24 16:49:48

标签: php chinese-locale

我从.csv文件中抓取中文字符并通过PHP回显到HTML,直接从.csv抓取它们很困难我将其复制粘贴到.txt并变得更容易处理数据,我的hanzi_characters.txt这个例子有几百行:

hanzi_characters.txt

产品

產品

囚徒困境

不正当竞争

我需要什么,我无法弄清楚如何正确地做,就是在每一行显示一个汉字,如下:

我尝试使用带有str_split()和explode()的foreach循环,因为它被认为是一个字符串,但只输出 。

在用完想法之前,我也尝试过使用array_chunk()和array_slice(),但是正如预期的那样,结果与不使用这些方法的结果相同。

我还尝试this solution分配$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);

?>

当前输出:

产品

产品

囚徒困境

不正当竞争

2 个答案:

答案 0 :(得分:0)

我猜你可以在这里使用php string-array。 运行foreach循环遍历所有行,然后使用php string-array。

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

答案 1 :(得分:0)

PHP的多字节字符串函数

你要找的是PHP的multibyte string functions,特别是mb_ereg_replace

我认为您想要的实际陈述如下:

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

检查PHP的字符集

为了使用mb_ereg_replace,从文件中读取的字符串的字符集必须与PHP使用的字符集相同。如果您读取文件并将其输出包装在<pre>标记中,它是否显示具有正确字符的文件?如果没有,则文件的编码可能与PHP使用的编码不同。

您可能需要查看this guide以确保使用utf8或类似的编码。一旦完成,并且您知道文件的编码,您可以使用mb_convert_encoding(如果发送到浏览器,请务必使用HTML-ENTITIES)将您读入的字符串转换为字符集你在PHP中使用。