2012-02-24 46 views
22

這不起作用:如何檢測一個字符串是否有新的換行符?

$string = 'Hello 
    world'; 

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

顯然,因爲字符串沒有在它的「\ n」字符。但是,除此之外,我還可以檢查是否有換行符是用戶在表單字段中按下輸入的結果?

+1

嘗試用PHP_EOL替換'\ n'。 – 2012-02-24 19:53:33

+2

也許你應該使用雙引號:''\ n「'或'preg_match('/ [\ n \ r] /') – biziclop 2012-02-24 19:53:52

+0

你想知道如何提交表單嗎?如果是這樣,你將不需要。只要提交按鈕作出提交按鈕,它應該提交一個輸入。 – CoffeeRain 2012-02-24 19:54:09

回答

50

您的現有測試不起作用,因爲您不使用換行符('\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

是不是用戶的計算機依賴而不是服務器依賴於您從親愛的用戶收到的行結尾? – biziclop 2012-02-24 19:57:38

+0

我只是泛泛而談......我總是使用'PHP_EOL',所以我的代碼在任何情況下都能正常工作。但如果你正在處理來自用戶的數據,那麼你是對的。 – rdlowrey 2012-02-24 20:01:04

+3

這是一個不好的答案,因爲PHP_EOL在不同的操作系統中有所不同。 – kjdion84 2017-07-12 22:10:02

3

換行符\r\n在Windows和UNIX機器上它是\n。 所以它搜索PHP_EOL而不是「\ n」以獲得跨OS兼容性,或者同時搜索「\ r \ n」和「\ n」。

+1

如果兩個換行符都包含'\ n',那麼您只需要真正需要搜索'\ n'以便跨操作系統兼容 - 以簡單地「檢測」換行符。 – MrWhite 2014-08-04 23:35:38

相關問題