gpt4 book ai didi

php - 如何匹配十六进制字符序列并将其替换为PHP中的空格

转载 作者:搜寻专家 更新时间:2023-10-31 21:57:54 24 4
gpt4 key购买 nike

我有一段文本需要清理一些字符。这些字符显示在我附加到问题的图片中。我想用空格 x20 替换它们。

First hex sequence

Second hex sequence

我的尝试是使用 preg_replace

$result = preg_replace("/[\xef\x82\xac\x09|\xef\x81\xa1\x09]/", "\x20", $string);

对于特定情况,此方法有效,但在某些情况下无效,因为例如我有一个带逗号的文本,它匹配 x82 并将其从该文本中删除。

我如何编写正则表达式来精确搜索此序列 ef 82 ac 09 或另一个 ef 81 a1 09,而不是像 那样分别搜索每一对code>ef 82 ac 09?

最佳答案

1.) 您匹配字符类中 6 个不同的十六进制字节或管道字符中的任何一个。可能想使用组 (?:...|...) 来匹配不同的字节序列。

2.) 字节序列与图像不匹配。好像你搞砸了两个字节。图片显示:ef 82 a1 09ef 81 ac 09 与您的尝试:\xef\x82\xac\x09 | \xef\x81\xa1\x09

3.) 当testing your input sample

$str = "de la nouvelle;      Fourniture $         Option :";

foreach(preg_split("//u", $str) AS $v) {
var_dump($v, bin2hex($v)); echo "\n";
}

事实证明,09 太多了。要删除的字符实际上是ef81acef82a1。所以正确的正则表达式是 (?:\xef\x81\xac|\xef\x82\xa1)

$result = preg_replace("/(?:\xef\x81\xac|\xef\x82\xa1)/", "\x20", $string);

参见 test at eval.in

关于php - 如何匹配十六进制字符序列并将其替换为PHP中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31591269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com