Подтвердить что ты не робот

Как определить, имеет ли строка в нем разрыв строки?

Это не работает:

$string = 'Hello
    world';

if(strpos($string, '\n')) {
    echo 'New line break found';
}
else {
    echo 'not found';
}

Очевидно, потому что в строке нет символа "\n". Но как еще я могу проверить, есть ли разрыв строки, который является результатом нажатия пользователем ввода в поле формы?

4b9b3361

Ответ 1

Ваш существующий тест не работает, потому что вы не используете двойные кавычки вокруг символа прерывания строки ('\n'). Измените его на:

if(strstr($string, "\n")) {

Или, если вам нужна совместимость между различными операционными системами:

if(strstr($string, PHP_EOL)) {

Также обратите внимание, что strpos вернет 0, и ваш оператор будет оценивать значение FALSE, если первый символ \n, поэтому strstr - лучший выбор. В качестве альтернативы вы можете изменить использование strpos на:

if(strpos($string, "\n") !== FALSE) {
  echo 'New line break found';
}
else {
  echo 'not found';
}

Ответ 2

разрыв строки \r\n на окнах, а на машинах UNIX - \n. поэтому его поиск PHP_EOL вместо "\n" для совместимости с несколькими ОС или поиск как "\ r\n", так и "\n".