Это не работает:
$string = 'Hello world'; if(strpos($string, '\n')) { echo 'New line break found'; } else { echo 'not found'; }
Очевидно, потому что в строке нет символа «\ n». Но как еще я могу проверить, есть ли разрыв строки, который является результатом нажатия пользователем ввода в поле формы?
Ваш существующий тест не работает, потому что вы не используете двойные кавычки вокруг символа прерывания строки ( '\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'; }
line break – \r\n
на окнах, а на машинах UNIX – \n
. поэтому он ищет PHP_EOL
вместо «\ n» для совместимости между ОС или ищет «\ r \ n» и «\ n».