문제
다음에서 변수를 일치시키고 추출하고 싶습니다. {{variable:int}}
- 변하기 쉬운 a-z라면 뭐든지 될 거야
- : 구분 기호입니다
- 정수 0-9의 정수입니다.
현재 나는: preg_replace('!\{\{(\S+)\}\}!', "$1", $string)
이는 작업의 절반만 수행하지만 여전히 분할해야 합니다. :
.
감사합니다!
해결책
이름/값을 추출하려면 preg_match를 사용하는 것이 좋을 것 같습니다.
preg_match('!\{\{(.*?):(\d)\}\}!', $string, $matches);
$varname = $matches[1];
$val = $matches[2];
다른 팁
당신은 탐욕스럽지 않은 성냥 (.*?
): preg_replace('!\{\{(.*?):(\d)\}\}!')
사용
{{([a-zA-Z]+):(\d+)}}
$1에는 캡처된 변수가 포함되고, $2에는 캡처된 정수가 포함됩니다.
설명
{{([a-zA-Z])+:(\d+)}}
[a-zA-Z]+는 하나 이상의 알파벳(소문자 또는 대문자)을 의미합니다.
그 뒤에 ":"가 붙는다.
그 뒤에 최소한 하나 이상의 숫자(0-9)가 옵니다.
제휴하지 않습니다 StackOverflow