2011-12-09 184 views
1

我有例如這樣的字符串 - 「第7路」或「第7個數字一些其他的單詞」或「一些單詞第8個單詞」。需要正則表達式幫助PHP

我需要首次出現的數字和所有其他下一個符號第一次出現的空間。

因此,對於上面的例子,我需要這樣的值「第七」,「第七」,「第八」。

然後從這些匹配像「第7」我需要提取其他操作中只有數字。

在此先感謝!

+2

你到目前爲止嘗試過什麼?一些更清晰的例子,以及您目前使用的代碼將幫助我們幫助您。 –

回答

4

正則表達式應該是/(\d+)([^\d]+)\s/和號碼將解析爲$1和結束字符$2

示例代碼:

$string = '7-th Road'; 
preg_match_all('/(\d+)([^\d]+)\s/', $string, $result, PREG_PATTERN_ORDER); 

var_dump($result[1]); 
array(1) { 
    [0]=> string(1) "7" 
} 

var_dump($result[2]); 
array(1) { 
    [0]=> string(1) "-th" 
} 
+0

謝謝!這是完美的工作!只有一個問題:這可能與這些後綴無關,可以是任何符號嗎? –

+0

你是什麼意思?你在尋找7,9,15嗎?然後只是數字? –

+0

那裏。爲你增加了額外的搜索。 –

0

你問這樣的事情?

#(\d+)-?(?:st|nd|rd|th)# 

Example

0

如果你想獲得從文本只是NUMS使用它:

preg_match_all('/(\d+)[th|\-th]*?/','7-th", "7th", "8-th', $matches); 

但是,如果你想刪除「日」或其他只是做更換:

preg_replace('/(\d+)[th|\-th]*?/','$1', 'some string') 

不確定最後一個...