PHP正则表达式与utf-8解码字符串不匹配

PHP正则表达式与utf-8解码字符串不匹配,php,regex,curl,utf-8,domxpath,Php,Regex,Curl,Utf 8,Domxpath,我在使用regex语句时遇到问题。我不确定它为什么会这样做,但是我认为它可能与字符编码有关 因此,我使用curl从网站接收页面内容。然后我使用domXPathquery获取某个元素,然后从该元素获取其内容,然后从该内容执行regex语句。然而,regex语句不起作用,我不知道为什么 这是我从元素中得到的: X: asdasdfgdgdrrY: dfgdfgfgZ: ukuykyukjghj a B 7dd. 现在,当我尝试将其与此代码匹配时: /X: (?P<x>.*)Y:

我在使用
regex
语句时遇到问题。我不确定它为什么会这样做,但是我认为它可能与字符编码有关

因此,我使用curl从网站接收页面内容。然后我使用
domXPath
query获取某个元素,然后从该元素获取其内容,然后从该内容执行
regex
语句。然而,
regex
语句不起作用,我不知道为什么

这是我从元素中得到的:

X: asdasdfgdgdrrY: dfgdfgfgZ: ukuykyukjghj
  a B 7dd. 
现在,当我尝试将其与此代码匹配时:

/X: (?P<x>.*)Y: (?P<y>.*)Z: (?P<z>.*)\s*(?P<a>[a-zA-Z]+) (?P<b>[a-zA-Z]+) (?P<c>[0-9]+)dd/
如果我不删除utf-8字符,在“a”、“b”和“c”变量值之后会有奇怪的
,
我要做的就是去掉这些看不见的无效字符:

$value = preg_replace("/[^a-zA-Z0-9 %():\$.\/-]/",' ',$value);
只需将任何无效字符替换为空格或空白即可。在我的例子中,我使用了空格,因为看起来有些空格是无效的

$value = preg_replace("/[^a-zA-Z0-9 %():\$.\/-]/",' ',$value);