2011-12-09 17 views
1

"7th Road"や "7th number some other words"や "some word 8th word"といった文字列があります。Regexpヘルプが必要ですPHP

数字の最初の出現と次のすべての次の記号をスペースの最初の出現まで取得する必要があります。

したがって、上記の例では、値「7th」、「7th」、「8th」が必要です。

「7th」のようなこれらのマッチから、他の操作では数字だけを抽出する必要があります。

ありがとうございます!

+2

これまでに何を試しましたか?いくつかのより明確な例と、これまでのコードは、私たちがあなたを助けるために長い道のりを行くでしょう。 –

答えて

4

正規表現は/(\d+)([^\d]+)\s/である必要があり、数字は$2

サンプルコードに$1と終了文字に解決されます:

$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

ありがとう!それは完璧に働いています!ちょうど1つの質問:これはこれらの接尾辞th | st | nd | rdとは関係がありませんし、任意の記号にすることができますか? –

+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') 

最後のものがわからない...