当前位置: 首页 > 知识库问答 >
问题:

PHP-preg_match()-匹配带有问号的替换字符黑色菱形

白驰
2023-03-14

我在使用SplFileObject阅读的文本中遇到了替换字符-菱形问号的问题。这个字符已经存在于我的文本文件中,因此无法将其转换为其他编码。我决定使用preg_match()搜索它,但问题是PHP找不到它的任何出现。PHP可能将其视为与不同的字符。我不想只是从文本中删除这个字符,所以这就是我想使用preg_match()搜索它的原因。有什么方法可以在PHP中匹配这个字符吗?

我尝试使用正则表达式行:/。�./i,但没有成功。

共有2个答案

颛孙麻雀
2023-03-14

带有SplFileObject的PHP似乎读取文件略有不同,而不是U FFFD检测U 0093和U 0094。如果您遇到与我相同的问题,那么我建议您使用 hexdump 来获取有关如何在其中编码无法识别的字符的信息。之后,我建议您按照@stribizhev在注释中的建议使用此代码片段,以使PHP识别十六进制代码。一旦你弄清楚什么是无法识别的字符的正确十六进制代码(使用@stribizhev在注释中建议的转换工具,以获得正确的值),你可以使用preg_...() 函数。这是我问题的解决方案

preg_replace("/(?|\x93|\x94)/i", "'", $text);
夏涵畅
2023-03-14

请尝试此代码。十六进制� 字符为FFFD

$line = "�";
if (preg_match("/\x{FFFD}/u", $line, $match))
  print "Match found!";
 类似资料:
  • 问题内容: 我在LONGTEXT列中有此数据(因此保留了换行符): 我正在尝试将第1段到第3段匹配。我正在使用以下代码: 这什么也不会返回。如果我尝试通过匹配以下内容在段落的第一行中工作: 然后代码工作,我得到正确的字符串返回。我在这里做错了什么? 问题答案: 使用修饰符。 http://php.net/manual/zh/reference.pcre.pattern.modifiers.php

  • 我将这些数据放在一个LONGTEXT列中(因此换行符被保留): 我正在尝试匹配第1到3段。我正在使用以下代码: 这不会返回任何结果。如果我试图在段落的第一行内进行匹配: 然后代码工作,我得到正确的字符串返回。我在这里做错了什么?

  • 问题内容: 我想用php代替完整的单词 示例:如果我有 我用 新文本应如下所示 新hello1您好,Helloz PHP返回 NEW hello1 hello,NEWz 谢谢。 问题答案: 您要使用正则表达式。该单词边界匹配。 如果包含UTF-8文本,则必须添加Unicode修饰符“ u”,以便不会将非拉丁字符误解为单词边界:

  • 本文向大家介绍PHP中preg_match函数正则匹配的字符串长度问题,包括了PHP中preg_match函数正则匹配的字符串长度问题的使用技巧和注意事项,需要的朋友参考一下 项目中,用preg_match正则提取目标内容,死活有问题,代码测得死去活来。 后来怀疑PHP 的preg_match有字符串长度限制,果然,发现“pcre.backtrack_limit ”的值默认只设了100000。 解

  • 问题内容: 如何替换字符串中所有出现的内容? 如果要替换字符串中的所有换行符(\ n)。 这只会替换第一次出现的换行符 我不知道该怎么做? 问题答案: 使用全局标志。

  • 好吧,我可能不会用正确的方法来做这件事,但现在。。 我有这个字符串,它需要一个链接并提取标签之间的文本... 这个字符串中有几个项目有和符号(在文本部分,而不是标记部分),但是大多数没有。我试图找出一种方法,要么将与号合并到当前模式中,要么在上做另一个preg_replace,以便在标记被删除后删除与号。 谢谢