有人可以解释一下,为什么这段代码
$string='6аd_ТЕХТ GOOD_TEXT';
$words = preg_split('/\s+/', $string, NULL, PREG_SPLIT_NO_EMPTY);
var_dump($words);
显示器
array(2) { [0]=> string(8) "6àd_ÒÅÕÒ" [1]=> string(9) "GOOD_TEXT" }
而不是
array(2) { [0]=> string(8) "6аd_ТЕХТ" [1]=> string(9) "GOOD_TEXT" }
我已经阅读了这个问题,但添加了/ u:
preg_split('/\s+/', $string, NULL, PREG_SPLIT_NO_EMPTY);// '/\s+/'
成为
preg_split('/\s+/u', $string, NULL, PREG_SPLIT_NO_EMPTY);// '/\s+/u'
无济于事。 如何解决这个问题?
谢谢。
答案 0 :(得分:1)
您的代码中还有其他内容在提供的示例中不存在。测试了提供的示例,它按预期工作。如果 真正发生的可能性很小(并且没有其他代码影响$string
),这可能是您正在使用的特定PHP版本的错误,可以解决通过升级PHP(但这不太可能是PHP的问题)。
答案 1 :(得分:0)
......我说这是斜线,但显然是utf-8的东西让它发挥作用。
编辑:我删除了其余部分,发现我需要的只是xml行,以使其在浏览器中运行。
<?php
ini_set('default_charset','utf-8');
header('Content-type: text/html; charset=utf-8');
echo '<?xml version="1.0" encoding="UTF-8"?'.'>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head><body><pre>
';
$string = "6аd_ТЕХТ GOOD_TEXT";
var_dump(preg_split('/\s+/u', $string, NULL, PREG_SPLIT_NO_EMPTY));
echo '</pre></body></html>';
这是输出:
array(2) {
[0]=>
string(13) "6аd_ТЕХТ"
[1]=>
string(9) "GOOD_TEXT"
}