2012-09-30 78 views
1

如何從這樣的變量我出來: $var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2";從變量中獲取PHP文件?

然後,我想以某種方式得到只有「page.php文件」,什麼都被設置爲?

任何想法如何做到這一點?

+0

你的意思是php文件的名稱,或者你的意思是php文件的內容? – King

回答

4

我不會用正則表達式爲,但parse_urlbasename

$var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2"; 
$parsed = parse_url($var1); 
var_dump(basename($parsed['path'])); 

參見codepad的例子。

0

一些簡單的正則表達式將讓你擺脫困境:

$var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2"; 
preg_match('/([a-z]+\.php)/', $var1, $file); // Returns `page.php` 
0

有這麼tehlulz提到的,或者也可以在活動中的preg_replace選項,你不知道文件擴展名是什麼的preg_match方法。

$pattern = '/(.*)(\/)(.*)(\?)(.*)/'; 
$replacement = '$3'; 
$filename = preg_replace($pattern, $replacement, $var1); 

有幾種方法可以完成您的工作。

2

這將使用路徑的最後一段。

$var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2"; 
$path = parse_url($var1, PHP_URL_PATH); 
$path_parts = explode('/', $path); 
var_dump($path_parts[count($path_parts) -1]); 

輸出:

string(8) "page.php" 
+0

對不起,我沒有看到jeroen的回答,他是最好的。 –

0

試試這個

$var1 = "www.game.mysite.com/folder/page.php?var1=fgsd rew1&var2=2"; 
$reversed_string = strrev($var1); 
$pos_of_questionMark = strpos($reversed_string, "?"); 
$pos_of_first_slash = strpos($reversed_string, "/"); 
$getfilename = strrev(substr($reversed_string,$pos_of_questionMark+1, $pos_of_first_slash-$pos_of_questionMark-1)); 
echo $getfilename;