2013-08-14 7 views
2

후행를 제외한 모든 숫자가 아닌 문자를 제거 뒤 따르는 X (대소 문자를 구분하지 않음)를 제외하고preg_replace이다() 나는 다음과 같은 코드가 숫자가 아닌 모든 문자를 제거하기 위해 한 X

예 :

s34kr = 34 

xX4rx = 4x 

rs5t928X = 5928X 
+0

내가 무엇을 의미하는 "X 후행를 제외한 모든 숫자가 아닌 문자"믿습니다. –

+0

@AndyLester, 나는 정말로 그렇다. – kylex

+0

두 개 이상의 후행 X가있을 수 있습니까? –

답변

1

당신은이 같은 교대과 함께보기 미리 주장을 사용할 수 있습니다

preg_replace('/\D(?=.)|[^xX]$/', '', $num); 

그것은 다른 문자 또는 뒤에 다음 경우에만 비 숫자 일치 'x'가 아닌 문자. 대신 일치 고려할 수

대체

이 어떤 자리의 번호 또는 'X'후행 일치하고 촬영에 합류

if (preg_match_all('/\d+|[xX]$/', $num, $matches)) { 
    $num = join('', $matches[0]); 
} else { 
    $num = ''; 
} 

함께 일치합니다.

0

시도 :

$num = preg_replace('/(?:(?!\b\d+[xX]?\b).)*(\b\d+[xX]?\b)?/', '$1', $num);

관련 문제