문제
안녕하세요, 약간의 도움이 필요합니다.
기존 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', the
post_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_]
. 당신은에서 테스트 할 수 있습니다 온라인 테스터 여기.
제휴하지 않습니다 StackOverflow