문제

안녕하세요, 약간의 도움이 필요합니다.

기존 preg_match 코드는 다음과 같습니다.

preg_match("/(\/)([0-9]+)(\/?)$/", $_SERVER["REQUEST_URI"], $m);

그것은 그것을 감지하는 좋은 일을합니다 post_id 다음 URI 문자열에서 :

http://www.example.com/health-and-fitness-tips/999/

나는 그것이 충분한 배경이어야한다고 생각합니다.

나는 그것을 바꾸고있다 999,, post_id, 에게 how-do-I-lose-10kg-in-12-weeks', thepost_title`s는 새 문자열을 감지하려면 pre_match regex를 변경해야합니다.

나의 첫 번째 생각은 단지 [AZ]를 추가하는 것이 었습니다.

"/(\/)([0-9][a-z]/-+)(\/?)$/"

아마도이 간단한가요? 그렇지 않다면 위의 문제는 무엇입니까?

도움이 되었습니까?

해결책

좀 빠지는: ([0-9][a-z]/-+) "숫자, 그 다음에 문자가 뒤따른 다음 하나 이상의 대시가 이어집니다."

당신은 원합니다 ([-0-9a-z]+).

다른 팁

나는 그냥 사용할 것입니다 \w:

preg_match('!/([-\w]+)/?$!', $_SERVER['REQUEST_URI'], $m);

에서 캐릭터 클래스 또는 캐릭터 세트:

\w 일반적으로 "단어 문자"를 나타냅니다 [A-Za-z0-9_]. 밑줄과 숫자의 포함을 주목하십시오.

\w 단어를 나타내며, 대문자와 소문자 A에서 z, a ~ z, 숫자 0-9 또는 _ 일 수 있습니다. 그것은 동일합니다 [A-Za-z0-9_]. 당신은에서 테스트 할 수 있습니다 온라인 테스터 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top