次のような URL がある場合:
http://www.example.com/400x200
ユーザーがphpを使用してそのURLにアクセスしたときに400x200をエコーするページを作成することは可能ですか?
パスをエコーする方法は知っていますが、これは簡単です ( ltrim($_SERVER['PATH_INFO'], '/')
) が、ページを動的に作成する方法がわかりません。
どんな助けでも大歓迎です、事前に感謝します
URL の書き換えについては、Apache Rewrites を参照してください。
ページを動的に作成するとはどういう意味かわかりませんが、 of を使用するmod_rewrite
ことが必要だと思います。
あなたの.htaccess
ファイルでは、URL を PHP スクリプトで区別できるものに書き換えるいくつかのルールを作成する必要があります。
http://www.example.com/400x200
取得するため
http://www.example.com/index.php?param=400x200
そして、あなたはあなたのindex.php
スクリプトで行うことができますecho $_GET['param'];
...
PHP についての Google 何かmod_rewrite
: http://www.google.com/#q=PHP+mod_rewrite
リクエスト URI ( /400x200
) は、サーバーのスーパーグローバル: に格納されます$_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 プロジェクトからコピーされます)。
Apache を使用していると仮定すると、これはURL 書き換えと呼ばれるものを使用して実行できます。.htaccess
ドキュメント ルートにというファイルを作成し、これを追加します。
# Turn URL rewriting on
RewriteEngine on
Options +FollowSymlinks
# Rewrite rule
RewriteRule ^(\d+x\d+)/?$ index.php?dimensions=$1 [L]
最初の 2 行で書き換えエンジンをオンにし、3 行目でRewriteRule
. 最初の部分^(\d+x\d+)/?$
は、ドメインの後の URL の部分が照合される正規表現です。
2 番目の部分index.php?dimensions=$1
は、書き換え先の URI です。クライアントはこれを認識しませんが、PHP は認識します。
URL を使用するとprint_r($_GET)
、次のようになります。index.php
http://localhost/400x300
Array ( [dimensions] => 400x300 )
これは$_GET
、PHP の標準的なスーパーグローバル配列からのもので、通常どおり使用できます。URL 書き換えでは、URL はそのままブラウザーに残されますが、クエリ文字列を使用して PHP で使用できる URL に変換できます。
スクリプトを使いやすくするために、式を分割して X 値と Y 値を個別に取得できます。
RewriteRule ^(\d+)x(\d+)/?$ index.php?x=$1&y=$2 [L]
次のような配列が得られます。
Array ( [x] => 400, [y] => 300 )
のようなGET変数にします
http://www.example.com?size=400x200
次に、文字列を取得できます
$size = $_GET['size'];
私がお勧めするのは、分割または爆発()に基づいて値を取得することです
$lw = $size.explode('x',$size);
$length = $lw[0];
$width = $lw[1];
//Manipulate the values accordingly like
echo $length.'x'.$width;