gpt4 book ai didi

php - 正则表达式不起作用

转载 作者:可可西里 更新时间:2023-11-01 01:02:24 24 4
gpt4 key购买 nike

在我的方法中,我从源代码中提取了以下字符串 Plange Mühle 1, 40221 Düsseldorf 我现在要做的是过滤掉所有内容,直到逗号,然后是数字,然后是再说一遍我所做的是执行这个不起作用的正则表达式。

^(.*?),\s*([0-9]{5})\s*(\S*)

但这应该正常工作,对吧?所以我又开始删除所有内容,然后一部分一部分地删除。当我只有部分时,它需要一切,直到它工作的逗号,但当然只适用于逗号之前的数据。但是,在第一个空格之后,问题出现了。当我之后做任何事情时,比如 [^0-9] 一个标志出现了。就在这里

数组(2){
[0]=>
string(19) "Plange Mühle 1,�"
[1]=>
string(17) "Plange Mühle 1"
}

问号?它是什么?我不知道它是从哪里来的。我的文档都是 UTF-8 编码的,所以我想知道它是怎么来的,现在我该如何解决这个问题。你们知道这是什么以及我该如何解决吗?

最佳答案

正则表达式看起来不错,但您使用正确吗?对于 Unicode 字符串,您应该设置 /u 参数。现在这只是推测,但也许字符串中某处有一个非 ASCII 空白字符,您的正则表达式无法正确识别,将多字节序列切成两半,结果给您一个无效字符。

所以也许这行得通:

preg_match('/^(.*?),\s*([0-9]{5})\s*(\S*)/u', $subject, $regs)

关于php - 正则表达式不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20377473/

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