如何从这样的变量中输出:
$var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2";
然后我想以某种方式只获得“page.php”,它的设置是什么?
任何想法如何做到这一点?
答案 0 :(得分: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上的示例。
答案 1 :(得分: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"
答案 2 :(得分:0)
一些简单的正则表达式可以让你摆脱困境:
$var1 = "www.game.mysite.com/folder/page.php?var1=1&var2=2";
preg_match('/([a-z]+\.php)/', $var1, $file); // Returns `page.php`
答案 3 :(得分:0)
tehlulz提到的preg_match方法,或者在您不知道文件扩展名是什么的情况下还有preg_replace选项。
$pattern = '/(.*)(\/)(.*)(\?)(.*)/';
$replacement = '$3';
$filename = preg_replace($pattern, $replacement, $var1);
有几种方法可以实现您的目标。
答案 4 :(得分: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;