preg_match () (또는 기타 PHP Regex 함수)가 가변 수의 괄호화 된 하위 패턴과 일치 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/1294721

  •  18-09-2019
  •  | 
  •  

문제

내가 가지고 있다고 가정 해 '/srv/www/site.com/htdocs/system/application/views/' 그리고 경로의 각 디렉토리 이름과 일치하는 RegexP에 대해 테스트하고 싶습니까?

무엇 이 패턴처럼 : '(/[^/])'
그것은 배열을 산출합니다 'srv','www','site.com'... 등.

추신 : 내가 쓴 regexp 구문은 단지 테스트를 거치고 틀린 것이 아니라 아이디어를주는 것입니다.

PS2 : 나는 있다는 것을 알고 있습니다 explode() 그러나 우리가 RegexP 로이 작업을 수행 할 수 있는지 살펴 보겠습니다 (폭발하지 않은 다른 언어 및 프레임 워크에 유용합니다).

도움이 되었습니까?

해결책

preg_match_all:

$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 () 더 적합 할 수 있습니다.

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