Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式问题:_Php_Regex - Fatal编程技术网

PHP正则表达式问题:

PHP正则表达式问题:,php,regex,Php,Regex,这个正则表达式不应该取代charsäöü。 在Ruby中,它按预期工作。 但在PHP中,它也替换了äöandü 有人能告诉我如何修复它吗?Unicode支持是PHP6承诺的功能之一 目前在php5中 使用类似的 PHP将“/regex/u”解释为UTF-8字符串,带有preg_匹配、preg_替换 我认为这应该有效: $string1 = preg_replace('/[^A-Za-z0-9äöü!&_=\+-]/', ' ', $string4); 设置u(告诉php将正则表达式视

这个正则表达式不应该取代charsäöü。 在Ruby中,它按预期工作。 但在PHP中,它也替换了äöandü


有人能告诉我如何修复它吗?

Unicode支持是PHP6承诺的功能之一

目前在php5中

  • 使用类似的
  • PHP将“/regex/u”解释为UTF-8字符串,带有preg_匹配、preg_替换

    • 我认为这应该有效:

      $string1 = preg_replace('/[^A-Za-z0-9äöü!&_=\+-]/', ' ', $string4);
      
      设置
      u
      (告诉php将正则表达式视为UTF-8字符串)


      这是对代码本身的unicode支持。(Unicode变量名等)。PHP目前确实支持处理UFT-8字符串(尽管有很多gotcha,并且本机字符串函数通常不能很好地使用它)…但是php5中仍然支持一些函数,请检查更新。mb函数会导致输出出现问题。没错,大多数时候,你不能相信它是有效的,但有时你却不知道。这就是为什么我的第一句话是“Unicode支持是PHP6承诺的功能之一。”@ndi,你试过perl而不是吗?不,我不知道pearl。我选择了ruby。谢谢你的帮助你确定这些是准确的字符吗?它们不是角色实体吗?您可以向我们展示您无法使用的源字符串吗?是的,当然:$string4=“abcdeför ahügöld;:”;如果没有/u,它会用/u替换ö和ü,它不会输出任何东西(无论是否使用
      /u
      ):
      var_dump($string1,$string4)产生:
      string(22)“abcdeför ahügöld”string(22)“abcdeför ahügöld;:”
      。什么版本的PHP?另外,您是否将该文件保存为UTF-8文件(PHP源代码文件)?我使用的是PHP5.3,源代码保存为UTF-8格式。当我将vardump与/u一起使用时,我得到空字符串(19)“abcdeför ahügöld;”:“当我不使用u时,它会给我abcdef r ah g ld string(19)”abcdef r ah g ld“string(19)”abcdeför ahügöld;:“对不起,这是我的错,我的脚本中还有一个错误。正则表达式现在可以按预期工作,但在不同的字符集“/[^\pL]/u”中仍然存在字符集和öäü替换的问题,其中L表示“字母”,可能您还需要添加其他字符,这需要PHP>5.1()
      $string1 = preg_replace('/\[^A-Za-z0-9\pL!&_=\+-]/u', ' ', $string4 );
      
      '/[^A-Za-z0-9äöü!&_=\+-]/u'