preg_match () (또는 기타 PHP Regex 함수)가 가변 수의 괄호화 된 하위 패턴과 일치 할 수 있습니까?
-
18-09-2019 - |
문제
내가 가지고 있다고 가정 해 '/srv/www/site.com/htdocs/system/application/views/'
그리고 경로의 각 디렉토리 이름과 일치하는 RegexP에 대해 테스트하고 싶습니까?
무엇 이 패턴처럼 : '(/[^/])'
그것은 배열을 산출합니다 'srv','www','site.com'...
등.
추신 : 내가 쓴 regexp 구문은 단지 테스트를 거치고 틀린 것이 아니라 아이디어를주는 것입니다.
PS2 : 나는 있다는 것을 알고 있습니다 explode()
그러나 우리가 RegexP 로이 작업을 수행 할 수 있는지 살펴 보겠습니다 (폭발하지 않은 다른 언어 및 프레임 워크에 유용합니다).
해결책
$str = '/srv/www/site.com/htdocs/system/application/views/';
preg_match_all('/\/([^\/]+)/', $str, $matches);
// $matches[0] contains matching strings
// $matches[1] contains first subgroup matches
print_r($matches[1]);
산출:
Array
(
[0] => srv
[1] => www
[2] => site.com
[3] => htdocs
[4] => system
[5] => application
[6] => views
)
다른 팁
거기 있습니다 preg_split
폭발과 유사한 정규식으로 파일을 분할하려면 preg_match_al
엘 당신이 원하는 것을합니다.
나는 당신이 할 수 있다고 생각하지 않지만 대신 사용할 수 있습니다. preg_match_all () 정규 표현식에서 여러 경기를 얻습니다. 도 있습니다 preg_split () 더 적합 할 수 있습니다.
제휴하지 않습니다 StackOverflow