2016-08-03 1 views
0

내 요구 사항은 8 자리 숫자와 특수 문자가 끝에있는 일부 URL을 리디렉션하는 것입니다.특수 문자 및 숫자로 끝나는 URL 패턴 리디렉션

URL의 예는

www.example.com/anything-here/hello-12345677

www.example.com/anything-here/again-here/again-hello-12543598

아래 주어진 "-"8 자리 숫자

www.example.com/anything-here/hello-12345677

나는 포함하는 패턴을 찾기 위해 PHP에서 pregmatch을 사용하고 있습니다.

아래 코드를 시도했지만 제대로 작동하지 않습니다. 내 패턴이 맞습니까?

+0

특수 문자는 무엇입니까? 나는 숫자 만 본다. – chris85

+0

HI Chris "-"는 특수 문자 다음에 8 자리 숫자가옵니다. 예 : "-12345678" – Vishnu

+1

아, '및 끝에 특수 문자'를 다시 써야 할 수 있습니다. URL에'/ - '이 없습니다. 그래서 당신은 성냥을 얻지 못합니다. 예 : '- \ d {8} $'은'-'에 대해서 충분하고, 문자열의 끝에는 8 개의 숫자가 올 수 있습니다. – chris85

답변

2

다음 패턴은 끝에 8 자리가 오는 모든 대시와 일치합니다. 끝에 특수 문자가있는 URL은 일치하지 않습니다. 여기

$result = preg_match("/.*-\d{8}$/i", request_uri()); 

데모 :

Regex101

+0

'. *'와'i'는 실제로 필요하지 않습니다. – chris85

+0

안녕하세요, Tim, 저를 위해 일하지 않습니다. – Vishnu

+0

@Vishnu 마지막에 어떤 특수 문자를 찾으시겠습니까? –

-1

은 $가 = SUBSTR의 결과 (REQUEST_URI()을 strpos (REQUEST_URI() "-") + 1);

소스 : Get everything after a certain character

+0

다음 링크를 확인하십시오 : [좋은 답변 작성 방법] (http://stackoverflow.com/help/how-to-answer). –

1

사용하는 정규식 문제는 당신이 대시의 패턴을 넣어 8 자리 직접 슬래시 후, 당신이 보여 모든 예제에서, 사이 다른 문자 있다는 것입니다 슬래시와 대쉬.

//         ***** <---These chars don't match your pattern 
$url = "www.example.com/anything-here/hello-12345677"; 
//     .*   / -\d{8} $ 

당신이 -\d{8} 전에 URL에 슬래시가 있는지 확인하려면이 (.*/.*-\d{8}$가), 또는 그 다음, 슬래시도 와일드 카드도 문제가되지 않는 경우에 전에, 당신은 또 다른 와일드 카드를 추가 할 수 있습니다 필요합니다. (-\d{8}$).