PHP - preg_match() - 匹配带问号的替换字符黑菱形
PHP - preg_match() - matching substitution character black diamond with question mark
我在使用 SplFileObject 阅读的文本中遇到替换字符问题 - 菱形问号 �。该字符已存在于我的文本文件中,因此无法将其转换为其他编码。我决定用 preg_match() 搜索它,但问题是 PHP 找不到它的任何出现。 PHP 可能将其视为与 � 不同的字符。我不想只从文本中删除这个字符,所以这就是我想用 preg_match() 搜索它的原因。 PHP?
中有什么方法可以匹配这个字符吗?
我尝试使用正则表达式行:/.�./i
,但没有成功。
试试这个 code.Hexadecimal 的 � 字符是 FFFD
$line = "�";
if (preg_match("/\x{FFFD}/u", $line, $match))
print "Match found!";
PHP 与 SplFileObject 似乎读取文件有点不同,而不是 U+FFFD 检测 U+0093 和 U+0094。如果您遇到与我相同的问题,那么我建议您使用 hexdump 来获取有关无法识别的字符是如何编码的信息。之后,我建议您按照@stribizhev 在评论中的建议使用 this snippet as recommended by @stribizhev in comments, to get hex code recognized by PHP. Once you figure out what is correct hex code of unrecognized character (use conversion tool 以获得正确的值),您可以使用 preg_...() 函数。这是我的问题的解决方案:
preg_replace("/(?|\x93|\x94)/i", "'", $text);
我在使用 SplFileObject 阅读的文本中遇到替换字符问题 - 菱形问号 �。该字符已存在于我的文本文件中,因此无法将其转换为其他编码。我决定用 preg_match() 搜索它,但问题是 PHP 找不到它的任何出现。 PHP 可能将其视为与 � 不同的字符。我不想只从文本中删除这个字符,所以这就是我想用 preg_match() 搜索它的原因。 PHP?
中有什么方法可以匹配这个字符吗?我尝试使用正则表达式行:/.�./i
,但没有成功。
试试这个 code.Hexadecimal 的 � 字符是 FFFD
$line = "�";
if (preg_match("/\x{FFFD}/u", $line, $match))
print "Match found!";
PHP 与 SplFileObject 似乎读取文件有点不同,而不是 U+FFFD 检测 U+0093 和 U+0094。如果您遇到与我相同的问题,那么我建议您使用 hexdump 来获取有关无法识别的字符是如何编码的信息。之后,我建议您按照@stribizhev 在评论中的建议使用 this snippet as recommended by @stribizhev in comments, to get hex code recognized by PHP. Once you figure out what is correct hex code of unrecognized character (use conversion tool 以获得正确的值),您可以使用 preg_...() 函数。这是我的问题的解决方案:
preg_replace("/(?|\x93|\x94)/i", "'", $text);