0

如果您有如下网址:

http://www.example.com/400x200

当用户使用 php 访问该 url 时,是否可以创建一个回显 400x200 的页面?

我知道如何回显路径 - 这很容易(ltrim($_SERVER['PATH_INFO'], '/')),但不知道如何动态创建页面。

任何帮助将不胜感激,在此先感谢

4

5 回答 5

1

您可能希望查看 Apache Rewrites 以重写您的 URL:

http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

于 2012-06-19T09:48:33.337 回答
1

不知道动态创建页面是什么意思,但我想使用 ofmod_rewrite是您所需要的。

在您的.htaccess文件中您必须创建一些规则,将 URL 重写为您的 PHP 脚本可区分的内容 - 例如从 URL

http://www.example.com/400x200

要得到

http://www.example.com/index.php?param=400x200

然后你可以在你的index.php脚本中做echo $_GET['param'];......

谷歌一些关于 PHP 和mod_rewritehttp ://www.google.com/#q=PHP+mod_rewrite

于 2012-06-19T09:51:42.297 回答
1

假设您使用的是 Apache,这可以使用称为URL 重写的东西来完成。.htaccess在您的文档根目录中创建一个名为的文件,并添加以下内容:

# Turn URL rewriting on
RewriteEngine on
Options +FollowSymlinks

# Rewrite rule
RewriteRule ^(\d+x\d+)/?$ index.php?dimensions=$1 [L]

前两行打开重写引擎,第三行定义一个RewriteRule. 第一部分^(\d+x\d+)/?$是正则表达式,域之后的 URL 部分将与之匹配。

第二部分index.php?dimensions=$1是要重写的 URI。客户端看不到这一点,但 PHP 会。

如果我使用 URL 进行print_r($_GET)操作,我会得到以下信息:index.phphttp://localhost/400x300

Array ( [dimensions] => 400x300 )

这是来自$_GETPHP 中的标准超全局数组,可以正常使用。URL 重写将 URL 保留在浏览器中,但允许您通过查询字符串将其转换为 PHP 可用的 URL。


为了使您的脚本更易于使用,您可以拆分表达式以获得单独的 X 和 Y 值:

RewriteRule ^(\d+)x(\d+)/?$ index.php?x=$1&y=$2 [L]

这将给出一个这样的数组:

Array ( [x] => 400, [y] => 300 )
于 2012-06-19T09:52:47.100 回答
1

请求 URI ( /400x200) 存储在服务器 superglobal:$_SERVER["REQUEST_URI"]中。

您需要采用它并相应地路由 URI。最简单的可能方案:在您的 index.php 中,放置以下代码:

$uri = trim($_SERVER["REQUEST_URI"],"/");

if (preg_match("/\d+x\d/")) {
    list($width,$height) = explode("x",$uri);
    // some logic with the above vars, e.g. include a view script
}

它的作用是检查 URI 是否具有格式{number}x{number},提取两个数字并将它们存储在变量$width$height中。然后你可以对变量做任何你喜欢的事情。

为了使请求始终指向包含此代码的文件,请编辑您的 .htaccess 并输入如下内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

(.htaccess 代码是从默认的 Zend Framework 项目中复制的,以防有人询问)。

于 2012-06-19T09:56:31.153 回答
0

使其成为 GET 变量,例如

http://www.example.com?size=400x200 

然后你可以检索字符串

$size = $_GET['size'];

我建议您做的是根据 split 或 explode() 获取值

$lw = $size.explode('x',$size);
$length = $lw[0];
$width = $lw[1];
//Manipulate the values accordingly like
echo $length.'x'.$width;
于 2012-06-19T09:51:19.233 回答