我很新/生鏽的正則表達式。我正在從一個textarea元素收集一段文本,並且我想檢查填充它的人是否使用了任何段落以及其他內容。正則表達式使用PHP的preg_match來查找換行
我正在使用以下,我知道這是錯誤的。任何幫助,將不勝感激。
preg_match('/\r\n|\n|\r/', $_GET['text']);
我很新/生鏽的正則表達式。我正在從一個textarea元素收集一段文本,並且我想檢查填充它的人是否使用了任何段落以及其他內容。正則表達式使用PHP的preg_match來查找換行
我正在使用以下,我知道這是錯誤的。任何幫助,將不勝感激。
preg_match('/\r\n|\n|\r/', $_GET['text']);
你的正則表達式沒有錯。但對於檢測的段落,你會想看看連續兩個新行:
preg_match('/(\r?\n){2}/'
回車\r
是可選的,我只想檢查\n
換行符爲大多數平臺可以把它看成換行符。如果提交的文本只是一行沒有段落或換行符的行,顯然這種檢查會失敗。
preg_match('/(\s*\n){2}/'
假設:
另外,您可以用空白的任何一種之間也探測兩個新行
這是一個段落。這是一段。這是一段。這是一段。這是一段。這是一段。這是一段。這是一段。這是一段。
這是另一個。這是另一回事。這是另一回事。這是另一回事。這是另一回事。這是另一回事。這是另一回事。這是另一回事。這是另一回事。這是另一回事。
你可能只是做:
if (str_replace("\r\n\r\n", '', $str) != $str)
// the input contains at least two paragraphs
謝謝你。我試圖用preg_match保持它,因爲它正在循環中處理來自csv文件的一系列規則,但我會記住您的解決方案,並給它一個。 – 2011-06-01 23:33:41
我給了它一個去,但它總是返回正面,即使textarea中沒有段落:if(str_replace(「\ r \ n \ r \ n」,'',$ text)== $ text)echo'檢測到段落';感謝您的幫助,還有什麼想法? – 2011-06-01 23:50:48
@Ed Fearon的確如此。我修改了這個條件。 – seriousdev 2011-06-02 06:27:59
感謝這些建議,不幸的是,這些都爲我工作。所以,再詳細一點:我編寫了一個腳本,用於讀取一段文本並分析它的基本寫作特徵。一個csv文件定義了一系列規則,每個規則都有一個關聯的正則表達式。 以下是您建議的其中一個表達式的CSV記錄。 段落,W,3,a,p,「/(\ s * \ n){2} /」,以每個新焦點開始一個新段落, 它由fgetcsv加載,的preg_match。這個過程會影響它嗎?非常感謝您的時間,任何進一步的幫助真的很感激。 – 2011-06-01 23:24:04
在CSV中它是一個轉義序列,'fgetcsv'應該單獨離開'\ n'。但你應該打印出正則表達式來進行調試。 (這個正則表達式在我的測試中效果很好。) – mario 2011-06-01 23:40:08
它完全像在csv中一樣打印爲/(\ s * \ n){2} /。我有點難住。 – 2011-06-02 00:02:37