연습 및 차후 개발에 관해서는 PHP 라우터를 사용하고 있습니다. 이 라우터를 들어, 내 매핑 경로 그들에 매개 변수를 가질 수, 경로는 다음과 같습니다한 줄에 여러 개의 정규식 일치 찾기
/홈/{I : pageNum}/{S : 아이디}
지금이 개 변수가 있습니다
- pageNum 변수 문자열 유형
{((?<type>\D):)?(?<name>[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]+)}
이 잘 작동하지만, 유일한 문제는 단지 첫 번째 변수를 캡처하는 것입니다 :이 데이터를 캡처
, 난이 정규 표현식을 썼다.
새 행에 새 경로를 추가 할 때만 더 많은 일치 항목을 캡처합니다.
(
님 및 )
님의 주변에서 정규식 전체를 캡처하려고했습니다. 이것은 작동하지 않았다.
한 줄의 텍스트에서 더 많은 일치를 캡처 할 수 있도록이 정규 표현식을 만들려면 어떻게해야합니까? 기본 PREG_PATTERN_ORDER
을 사용
foreach($matches as $match) {
echo $match['name'] . ' = ' . $match['type'];
}
: 다음
preg_match_all("/{((?<type>\D):)?(?<name>[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]+)}/",
"/home/{i:pageNum}/{s:userName}",
$matches,
PREG_SET_ORDER);
: 그냥 preg_match_all()
및 PREG_SET_ORDER
를 사용
preg_match("/{((?<type>\D):)?(?<name>[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]+)}/", "/home/{i:pageNum}/{s:userName}", $matches);
일치하는 PHP 함수는 무엇입니까? – h4r5h4
이 정규식을 사용하는 PHP 코드를 표시 할 수 있습니까? 나는 당신이 [preg_match_all()] (https://php.net/preg_match_all) 대신에 [preg_match()] (https://php.net/preg_match)를 사용하고 있다고 가정합니다. PHP는 한 번 대 글로벌 매칭을위한 두 개의 분리 된 함수를 가지고 있습니다. 다른 언어들은 전역 매칭을 위해서 단지'// g '를 사용합니다. –
내 질문이 업데이트되었습니다. 실제로 preg_match()를 사용하고 있습니다. – Bas