PHP preg_split忽略转义序列

PHP preg_split忽略转义序列,php,regex,split,Php,Regex,Split,如何逐个拆分字符串,但忽略转义字符? 在我的示例中,我有字符串:- \ntest\rtest\n 我希望它是这样的:- Array ( [0] => \n [1] => t [2] => e [3] => s [4] => t [5] => \r [6] => t [7] => e [8] => s [9] => t [10] => \n )

如何逐个拆分字符串,但忽略转义字符? 在我的示例中,我有字符串:-

\ntest\rtest\n
我希望它是这样的:-

Array
(
    [0] => \n
    [1] => t
    [2] => e
    [3] => s
    [4] => t
    [5] => \r
    [6] => t
    [7] => e
    [8] => s
    [9] => t
    [10] => \n
)

有人说使用preg_split,但我对regex知之甚少。

如果您只想获取数组,可以逐个读取带有char的字符串。
无论正则表达式如何。

如果要匹配每个字符(可选前面加一个
\
),可以使用:

$str = '\ntest\rtest\n';
preg_match_all('/\\\?[a-zA-Z]/', $str, $matches);

它将返回一个包含单个字符序列和转义字符序列的数组。

反斜杠需要在正则表达式中转义。
当引用一个实际反斜杠时,需要一系列三个反斜杠

正则表达式匹配

preg_match_all("/\\\?[^\\\]/", $str, $matches);
现场演示代码:

正则表达式拆分-仅用于教育目的,因为在这种情况下匹配更合适


$matches=preg_split(“/(?您可以先删除所选的转义字符,然后应用
str_split()


为什么要使用preg\u match..使用string函数
str\u split
对不起,我的错误,实际上想一个字符一个字符地写“preg\u split”就足够了,遇到“\”时还需要一些额外的处理。给定的字符串在双引号中
或单引号
?谢谢,但这个正则表达式看起来对我的示例stringWoops不起作用,我的意思是
preg\u match\u all()
,而不是
preg\u split()
。很高兴你找到了答案!
$matches=preg_split("/(?<=\\\[^\\\])(?!$)|(?<=[^\\\])(?!$)/", $str);  
$str = "\ntest\rtest\n";

print_r(str_split(strtr($str, array(
    '\r' => '', 
    '\n' => '',
))));