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

时间:2013-04-04 03:36:03

标签: php regex curl utf-8 domxpath

我遇到了一些regex声明的问题。我不确定为什么会这样做,但我认为它可能与字符编码有关。

所以我使用curl从网站接收页面内容。然后我使用domXPath查询来获取某个元素,然后从该元素中获取其内容,然后从该内容中执行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/

我在Dreamweaver中对此进行了测试并且匹配,因此我不知道它不会在线

此外,我收到的网页内容为utf-8,

我尝试使用

转换内容以删除utf-8字符
iconv('utf-8', 'ISO-8859-1//IGNORE', $td->item(0)->nodeValue);

如果我不删除utf-8字符,则在'a','b'和'c'变量值后面会有奇怪的Á符号。

1 个答案:

答案 0 :(得分:0)

好的,我想通了, 所有我必须做的就是摆脱这些看不见的无效字符:

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

预先更换任何无效的字符,空格或空格。在我的情况下,我使用了空格,因为它看起来有些空格是无效的。