我从.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);
?>
当前输出:
产品
产品
囚徒困境
不正当竞争
答案 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的multibyte string functions,特别是mb_ereg_replace
。
我认为您想要的实际陈述如下:
mb_ereg_replace ("~\s+~", '<br\>', $string);
为了使用mb_ereg_replace
,从文件中读取的字符串的字符集必须与PHP
使用的字符集相同。如果您读取文件并将其输出包装在<pre>
标记中,它是否显示具有正确字符的文件?如果没有,则文件的编码可能与PHP使用的编码不同。
您可能需要查看this guide以确保使用utf8
或类似的编码。一旦完成,并且您知道文件的编码,您可以使用mb_convert_encoding(如果发送到浏览器,请务必使用HTML-ENTITIES
)将您读入的字符串转换为字符集你在PHP中使用。