2011-12-09 140 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') 

不确定最后一个...