1

谁能解释一下,为什么这段代码

$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'

没有帮助。如何解决这个问题?

谢谢你。

4

2 回答 2

1

您的代码中还发生了所提供示例中不存在的其他内容。测试了提供的示例,它按预期工作。如果这种情况确实发生(并且没有其他代码影响$string),这可能是您正在使用的特定 PHP 版本的错误,可以通过升级 PHP 来解决(但它不太可能是一个问题与 PHP)。

于 2012-04-17T21:56:57.337 回答
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"
}
于 2012-04-17T21:56:48.837 回答