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' => '',
))));