PHP preg_split игнорирует escape-последовательность

Как я могу разделить строку один за другим, но игнорировать экранированный символ? Вот мой пример, у меня строка:

\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, но я мало знаю о регулярном выражении.

Solutions Collecting From Web of "PHP preg_split игнорирует escape-последовательность"

Обратные косые черты требуют ускорения в RegEx.
Когда вы ссылаетесь на одну действительную обратную косую черту, вам понадобится серия из трех \\\

Соответствие RegEx

 preg_match_all("/\\\?[^\\\]/", $str, $matches); 

Демо-код Live: http://codepad.viper-7.com/FLjH9A

RegEx split – только для образовательных целей, поскольку совпадение в этом случае более уместно

 $matches=preg_split("/(?<=\\\[^\\\])(?!$)|(?<=[^\\\])(?!$)/", $str); 

Демо-код: http://codepad.viper-7.com/yrbtMV

Сначала вы можете удалить экранированные символы, а затем применить str_split() :

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

если вы хотите получить массив, вы можете прочитать строку с символом char by one. независимо от регулярного выражения.

Если вы хотите сопоставить каждый отдельный символ (необязательно предшествующий a \ ), вы можете использовать:

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

Который возвращал массив с одиночными и экранированными символьными последовательностями.