Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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_String - Fatal编程技术网

PHP从字符串中删除终端代码

PHP从字符串中删除终端代码,php,regex,string,Php,Regex,String,在处理用proc\u open创建的进程的输入/输出时,我遇到了特殊的终端ANSI代码(\033[0J,\033[13G),除了找不到这些特定代码正在执行的操作的引用之外,它们还干扰了我的preg\u match调用 PHP是否有一个内置的方法来清理这些类型的字符串?或者使用什么正确的表达式来处理preg\u replace?请注意,我处理的是非ascii字符,所以除去…之外的所有字符都不起作用。通常ANSI代码是由ESC引入的(\033aka\x1b),一个开放的方括号,然后是数字(可能重复:

在处理用
proc\u open
创建的进程的输入/输出时,我遇到了特殊的终端ANSI代码(
\033[0J
\033[13G
),除了找不到这些特定代码正在执行的操作的引用之外,它们还干扰了我的
preg\u match
调用


PHP是否有一个内置的方法来清理这些类型的字符串?或者使用什么正确的表达式来处理
preg\u replace
?请注意,我处理的是非ascii字符,所以除去…之外的所有字符都不起作用。

通常ANSI代码是由ESC引入的(
\033
aka
\x1b
),一个开放的方括号,然后是数字(可能重复:
*[32;40m
),并以字母结尾

您可以使用类似于
#\\x1b[[][0-9]+(;[0-9]*)[A-Za-z]#
的东西来
preg\u replace
将它们全部删除

这是有效的(刚刚测试过),即使肯定是过度使用:

$test = preg_replace('#\\x1b[[][^A-Za-z]*[A-Za-z]#', '', $test);

我也有,而且。

通常ANSI代码是由ESC(
\033
又名
\x1b
)引入的,一个开放的方括号,然后是数字(可能重复:
*[32;40m
)并以字母结尾

您可以使用类似于
#\\x1b[[][0-9]+(;[0-9]*)[A-Za-z]#
的东西来
preg\u replace
将它们全部删除

这是有效的(刚刚测试过),即使肯定是过度使用:

$test = preg_replace('#\\x1b[[][^A-Za-z]*[A-Za-z]#', '', $test);

我还有,和。

您要先选择一个字符集。您正在读取原始字节。这很复杂。@self,如果按字符集您指的是编码,我总是处理utf8字符串。您要先选择一个字符集。您正在读取原始字节。这很复杂。@self,如果按字符集您指的是编码,我总是处理utf8字符串字符串。我无法获取要匹配的转义字符,我尝试将其更改为[\u001b],但出现错误“编译失败:PCRE不支持偏移量2处的\L、\L、\N{name}、\U或\U”.
\u
是Javascript。在PHP中,您需要
\x1b
,并且由于单引号仍将转义\,因此您需要
\\x1b
。请参阅更新的答案。我无法使转义字符匹配,我尝试将其更改为[\u001b],但出现错误“编译失败:PCRE不支持\L、\L、\N{name}、\u或偏移量2处的\u”.
\u
是Javascript。在PHP中,您需要
\x1b
,并且由于单引号仍将转义\,因此您需要
\\x1b
。请参阅更新的答案。