2012-02-01 65 views
29

字符串在PHP 5.3的第一行有一個nice function似乎做什麼,我想:獲取在PHP

strstr(input,"\n",true) 

不幸的是,服務器運行PHP 5.2.17和strstr可選的第三個參數是無法使用。有一種方法可以在一行中實現以前的版本嗎?

+0

您可能希望圍繞'\ n'使用雙引號。當我創建電子郵件內容時,用單引號了吧,'\ N'剛出來的時候作爲常規字符,而不是換行字符。 – Svish 2012-02-01 14:50:52

+0

爲什麼'一行'限制? – misterjinx 2012-02-01 14:51:18

回答

84

在這裏你去

$str = strtok($input, "\n"); 

strtok() Documentation

+0

汗水解決方案最快的方法 – 2012-02-01 15:13:16

+0

! – misterjinx 2012-02-01 15:21:31

+0

我不會說它是最快的(我不會打擾自己與速度比較),但它顯然是*最短* – 2012-02-01 15:22:49

4
$first_line = substr($fulltext, 0, strpos($fulltext, "\n")); 

或其他東西會做的伎倆。醜陋,但可行。

3

嘗試

substr(input, 0, strpos(input, "\n")) 
1

試試這個:

substr($text, 0, strpos($text, chr(10)) 
0

您可以使用strpossubstr結合。首先找到角色所在的位置,然後返回該部分的字符串。

$pos = strpos(input, "\n"); 

if ($pos !== false) { 
echo substr($input, 0, $pos); 
} else { 
echo 'String not found'; 
} 

這是你想要的嗎?

l.e. 沒有注意到一行限制,所以這是不適用的方式。您可以按照其他人的建議,將這兩個函數合併到一行中,或者您可以創建一個自定義函數,並按照需要在一行代碼中調用該函數。你的選擇。

+0

不是單行 – kinokijuf 2012-02-01 14:47:22

+0

單行限制?這是有原因的嗎?你知道你總是可以創建自己的函數,稍後可以在代碼的「一行」中調用它,對嗎? – misterjinx 2012-02-01 14:51:53

2

echo str_replace(strstr($input, '\n'),'',$input);

1
list($line_1, $remaining) = explode("\n", $input, 2); 

讓您輕鬆獲得頂線和內容留下,如果你想重複操作。否則按建議使用substr。

+0

雖然 – 2012-02-01 15:05:56

+0

您可以省略,但正如我所說,如果您想要最高的X行,然後使用我的原始「列表($ line_1,$剩餘)= explode(」\ n「,$ input,2);」將允許重複行動。有了這個編輯我的帖子是沒有意義的!?只是看起來像一個非常奇怪的編輯... – 2012-02-01 20:38:50

+0

那麼對於隨後的調用strtok仍然會更好。 – 2012-02-02 08:02:35

9

現在已經晚了,但你可以使用爆炸。

<?php 
$lines=explode("\n", $string); 
echo $lines['0']; 
?> 
+3

爲什麼在這個例子中使用字符串鍵?它應該是'$ lines [0]'? – trejder 2014-04-09 13:45:28

+1

注意:如果您只需要第一行,這是低效的。例如。如果'$ string'是一百兆字節,並且第一行只有一些字節,那麼這個解決方案會浪費一百兆字節的內存,並且當您達到內存限制時,甚至可能會終止您的腳本。 – 2017-08-02 15:56:08

+0

'current(explode(「\ n」,$ string));'縮短這個並解決中間變量和內存浪費的問題。 – billynoah 2018-02-17 06:38:48

1

不依賴於換行符號的類型。

(($pos=strpos($text,"\n"))!==false) || ($pos=strpos($text,"\r")); 

$firstline = substr($text,0,(int)$pos); 

$ FIRSTLINE現在包含文本或空字符串第一線,如果發現沒有中斷符號(或打破符號的文本中的第一個符號)。

0

很多時候字符串操作將面臨一個空白行啓動瓦爾,所以不要忘了評價,如果你真的要考慮白線在字符串的首末或修剪。此外,爲避免操作系統錯誤,請使用PHP_EOL以跨平臺兼容的方式查找換行符(When do I use the PHP constant "PHP_EOL"?)。

$lines = explode(PHP_EOL, trim($string)); 
echo $lines[0];