1

我怎样才能摆脱这样的变量: $var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2";

然后我想以某种方式只获得“page.php”,它被设置为什么?

任何想法如何做到这一点?

4

5 回答 5

4

我不会为此使用正则表达式,parse_url但是basename

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

请参阅codepad上的示例。

于 2012-09-30T01:02:00.733 回答
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"
于 2012-09-30T01:55:47.567 回答
0

一些简单的正则表达式会让你摆脱麻烦:

$var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2";
preg_match('/([a-z]+\.php)/', $var1, $file); // Returns `page.php`
于 2012-09-30T00:36:43.453 回答
0

tehlulz 提到了 preg_match 方法,如果您不知道文件扩展名是什么,还有一个 preg_replace 选项。

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

有几种方法可以完成你所追求的。

于 2012-09-30T00:41:09.513 回答
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;
于 2012-09-30T02:39:17.650 回答