Mysqli_real_escape_string мешающий preg_split работать?

Example Text: This will be stored in the $_POST['x'] variable
This is sentence one.
This is sentence two.
This is sentence three.

Если я запускаю этот код ниже, он вернет массив только с одним элементом

$x= mysqli_real_escape_string($db, $_POST['x']);
$y= preg_split("/(\r\n|\n|\r)/", $x);

Но если я запустите этот код ниже, он будет правильно разделен на все 3 элемента.

$x = $_POST['x'];
$y= preg_split("/(\r\n|\n|\r)/", $x);

Кто-нибудь еще испытывал это явление? Почему это происходит?

1 ответ

Решение

http://php.net/mysqli-real-escape-string
Кодируются следующие символы: NUL (ASCII 0), \n, \r, \, ', "и Control-Z.

Это означает, что переводы строки становятся \\n (НЧ), \\r (CR) и \\r\\n (CRLF). Поэтому они больше не соответствуют регулярному выражению.

В будущем RTM;)

Другие вопросы по тегам