This doesn\'t work:
$string = \'Hello
world\';
if(strpos($string, \'\\n\')) {
echo \'New line break found\';
}
else {
echo \'not found\';
}
<
The most reliable way to detect new line in the text that may come from different operating systems is:
preg_match('/\R/', $string)
\R
comes from PCRE and it is the same as: (?>\r\n|\n|\r|\f|\x0b|\x85|\x{2028}|\x{2029})
The suggested answer to check PHP_EOL
if(strstr($string, PHP_EOL)) {
will not work if you are for example on Windows sytem and checking file created in Unix system.
line break is \r\n
on windows and on UNIX machines it is \n
.
so its search for PHP_EOL
instead of "\n" for cross-OS compatibility, or search for both "\r\n" and "\n".
Your existing test doesn't work because you don't use double-quotes around your line break character ('\n'
). Change it to:
if(strstr($string, "\n")) {
Or, if you want cross-operating system compatibility:
if(strstr($string, PHP_EOL)) {
Also note that strpos
will return 0 and your statement will evaluate to FALSE if the first character is \n
, so strstr
is a better choice. Alternatively you could change the strpos
usage to:
if(strpos($string, "\n") !== FALSE) {
echo 'New line break found';
}
else {
echo 'not found';
}