2011-12-09 3 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

감사! 그것은 완벽하게 작동합니다! 한 가지 질문 :이 접미사는 th | st | nd | rd와 관련이 없으며 어떤 기호가 될 수 있습니까? –

+0

무엇을 의미합니까? 7, 9, 15를 찾으십니까? 그럼 그냥 숫자 야? –

+0

있습니다. 추가 검색 기능이 추가되었습니다. –

0

는이 같은 요구하고 있습니까? 당신이 '일'또는 다른 단지 할 교체를 제거 할 것인지

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

을 :하지만 당신이 얻을하려는 경우

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

Example

0

텍스트에서 불과 nums 그것을 사용

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

마지막에 대한 확신이 없음 ...

관련 문제