0

我正在尝试对以 ISO-8859-1 编码的数据使用 preg_match() 。如果我尝试匹配其中包含非 UTF-8 字符的字符串,preg_match() 会给我一个空匹配数组。

考虑以下代码:

setlocale(LC_ALL, 'en_US.iso-8859-1');
mb_internal_encoding("iso-8859-1");

// this returns an empty $matches array
$str = "Prices starting at " . chr(0x80);
preg_match('/^\s*+(?:\S++\s*+){1,3}/u', $str, $matches);

// this returns a filled matches array
$str = "Prices starting at $";
preg_match('/^\s*+(?:\S++\s*+){1,3}/u', $str, $matches);

在这种情况下,chr(0x80) 是欧元符号。在我升级到 php 5.4 之前,它工作得很好,但自从 php 5.4 不再存在了。

有什么方法可以让 php 5.4 preg_match() 理解我的 ISO-8859-1 数据?

4

0 回答 0