2011-07-28 7 views
2

PHP 문자열로 URI 문자열을 가져옵니다. URI가 될 수있다 :PHP - Regex로 문자열 파싱

solution 1 - http://www.site.com/one/two/ 
OR 
solution 2 - http://www.site.com/one/two/var_abcdefg.html 
OR 
solution 3 - http://www.site.com/one/two/var_abcdefg.html?var=123456 
OR 
solution 4 - http://www.site.com/one/two/?var=123456 

내가있는 문자열을 분할하고 싶습니다 : 나는 그것을 만들 수있는 방법

solution 1: 
var 1 = "http://www.site.com/one/two/"; 
var 2 = ""; 
var 3 = ""; 
solution 2: 
var 1 = "http://www.site.com/one/two/"; 
var 2 = "var_abcdefg.html"; 
var 3 = ""; 
solution 3: 
var 1 = "http://www.site.com/one/two/"; 
var 2 = "var_abcdefg.html"; 
var 3 = "?var=123456"; 
solution 4: 
var 1 = "http://www.site.com/one/two/"; 
var 2 = ""; 
var 3 = "?var=123456"; 

를?

+0

시도 ['parse_url'] (http://php.net/manual/en/function.parse-url.php를) – hakre

답변

3

있습니다 :

parse_url

$input = 'http://www.site.com/one/two/var_abcdefg.html?var=123456'; 
$output = parse_url($input); 

array(4) { 
    ["scheme"]=> 
    string(4) "http" 
    ["host"]=> 
    string(12) "www.site.com" 
    ["path"]=> 
    string(25) "/one/two/var_abcdefg.html" 
    ["query"]=> 
    string(10) "var=123456" 
} 
당신이 정말로 대신 parse_url()의 정규식을 사용하려면
2

정규식의 필요, PHP 부품에 URL 나누기 내장 함수가 있습니다 parse_url()

<?php 
$url = 'http://username:[email protected]/path?arg=value#anchor'; 

print_r(parse_url($url)); 

echo parse_url($url, PHP_URL_PATH); 
?> 

위 예제의 출력 : 빠른 방법은

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
2

, 당신이 시도 할 수 :

$url = 'http://www.site.com/one/two/var_abcdefg.html?var=123456'; 

preg_match('#^([^?]*?)([^/?]*)(\?.*|)$#', $url, $match); 

$var_1 = $match[1]; // http://www.site.com/one/two/ 
$var_2 = $match[2]; // var_abcdefg.html 
$var_3 = $match[3]; // ?var=123456