Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.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
Java preg_match():PHP正则表达式上的文本范围无序_Java_Php_Regex - Fatal编程技术网

Java preg_match():PHP正则表达式上的文本范围无序

Java preg_match():PHP正则表达式上的文本范围无序,java,php,regex,Java,Php,Regex,我想将java正则表达式转换为php正则表达式。但我得到了错误“-文本范围混乱” 这是JAVA正则表达式 "[^\\u0020-\\u007F\u011f\u00fc\u015f\u00f6\u00e7\u011e\u00dc\u015e\u0130\u00d6\u00c7\u0131]"; 这是PHP正则表达式 preg_replace("/[^\\x{0020}-\\x{007F}\\x{011f}\\x{00fc}\\x{015f}\\x{00f6}\\x{00e7}\\x{011e}\

我想将java正则表达式转换为php正则表达式。但我得到了错误“-文本范围混乱”

这是JAVA正则表达式

"[^\\u0020-\\u007F\u011f\u00fc\u015f\u00f6\u00e7\u011e\u00dc\u015e\u0130\u00d6\u00c7\u0131]";
这是PHP正则表达式

preg_replace("/[^\\x{0020}-\\x{007F}\\x{011f}\\x{00fc}\\x{015f}\\x{00f6}\\x{00e7}\\x{011e}\\x{00dc}\\x{015e}\\x{0130}\\x{00d6}\\x{00c7}\\x{0131}]/i","",".çşüiğıyuasdfaadsff");
我收到以下错误“-文本范围出错”


有什么帮助吗?

默认情况下,正则表达式引擎将输入字符串和正则表达式解释为PHP中的字节数组。由于
\x{011f}
\x{011e}
大于255(一个字节的最大值),您应该会得到一个字符值太大的错误

要匹配Unicode代码点,而不是任意字节序列,请使用
u
标志打开UTF模式

$re = '~[^\x{0020}-\x{007F}\x{011f}\x{00fc}\x{015f}\x{00f6}\x{00e7}\x{011e}\x{00dc}\x{015e}\x{0130}\x{00d6}\x{00c7}\x{0131}]~u';

您从何处获得此错误?在将正则表达式字符串粘贴到regex101.com中时?尝试添加u修饰符,但我不确定为什么会出现此错误:在ideone上,我得到了以下
PHP警告:preg_replace():编译失败:在PHP中第3行的/home/ivJ7iQ/prog.PHP中的\x{}或\o{}中的字符值在偏移量26处太大。OP为什么要使用此正则表达式?你改变了什么?为什么?