ホームページ >バックエンド開発 >PHPの問題 >PHPでリンクアドレスを置き換える方法

PHPでリンクアドレスを置き換える方法

藏色散人
藏色散人オリジナル
2021-09-22 09:29:033546ブラウズ

php でリンク アドレスを置き換える方法: 1. 「関数 GetCurUrl(){...}」メソッドを通じて現在のスクリプト URL を取得します; 2. 「関数 url_set_value($url,$key)」を通じて,$value)" {...}" メソッドを使用してリンク置換を実装できます。

PHPでリンクアドレスを置き換える方法

この記事の動作環境: Windows 7 システム、PHP バージョン 7.1、Dell G3 コンピューター。

PHP でリンク アドレスを置き換えるにはどうすればよいですか?

現在の URL を取得し、パラメーターまたは URL を php で置き換える方法

まず、PHP は現在のページの URL を取得します。

コード

//获得当前的脚本网址 
function GetCurUrl() 
{ 
if(!empty($_SERVER["REQUEST_URI"])) 
{ 
$scriptName = $_SERVER["REQUEST_URI"]; 
$nowurl = $scriptName; 
} 
else 
{ 
$scriptName = $_SERVER["PHP_SELF"]; 
if(empty($_SERVER["QUERY_STRING"])) 
{ 
$nowurl = $scriptName; 
} 
else 
{ 
$nowurl = $scriptName."?".$_SERVER["QUERY_STRING"]; 
} 
} 
return $nowurl; 
}

もう1つは、URLのクエリ部分の変数の値をPHPで置き換える方法で、例えば$url; にkey=321を設定したいとします。実際にはいくつかの状況があります:
$url='www.sina.com/a.php?key=330';
or $url='www.sina.com/a.php;
or $ url='www.sina.com/a.php?cat =2';
など。多くの状況がありますが、次のように PHP で処理するのは非常に簡単です:

コードは次のとおりです:

/* 将URL中的某参数设为某值*/ //【这一段就挺好啊】 
function url_set_value($url,$key,$value) 
{ 
$a=explode('?',$url); 
$url_f=$a[0]; 
$query=$a[1]; 
parse_str($query,$arr); 
$arr[$key]=$value; 
return $url_f.'?'.http_build_query($arr); 
}

しかし、私の置き換えは次のように書かれています。 。もちろん最悪です。 。


コードは次のとおりです:

<?php 
/** 
*使用例程:可用于分页类或页面中的替换等 
$url = "add_jd.php?pid=4&tb=gm_jd&page=1"; 
echo( "原始的URL:" . $url ); 
echo( &#39;<br/>&#39; ); 
echo( "字符串参数:" . url::replace( $url , "pid=10,page=2") ); 
echo( &#39;<br/>&#39; ); 
echo( "数组型参数:" . url::replace( $url , array(&#39;pid&#39;=>10,&#39;page&#39;=>5)) ); 
//echo( urlReplace( $url , array(&#39;pid&#39;=>10,&#39;page&#39;=>5)) ); 
*/ 
/** 
* url replace 
* @param string $url 需要替换的URL字符串,一般为aaa.php?abc=def,也可以带上路径,象http://xxx.com/abc/def.php?aa=bb 
* @param mixed $options 需要替换的变量,可以是字符串或数组,如果是字符串,格式为"aa=bb,cc=dd",有多个,用","隔开 
* @return string $url 替换后的URL 
*/ 
class url 
{ 
static function replace ( $url , $options) 
{ 
$options = self::optInit( $options ); 
$Query = parse_url( $url , PHP_URL_QUERY ); 
if($Query){ 
parse_str( $Query , $GET ); 
if ( $GET ){ 
//foreach ( $GET as $_k => $_v ){ 
// //if( array_key_exists( $_k , $options)){ 
// $GET[$_k] = $options[$_k]; 
// //} 
//} 
$GET = array_merge($GET,$options); 
} 
return str_replace( $Query , http_build_query( $GET ), $url ); 
} 
if( !$Query && $options ){ 
return $url . "?" . http_build_query($options); 
} 
return $url; 
} 
static private function optInit ( $options ) 
{ 
if( is_string( $options )){ 
$optlists = Power::Normalize( $options ); 
foreach( $optlists as $val){ 
list($tmpKey,$tmpVal) = Power::Normalize( $val , "="); 
$opts[$tmpKey] = $tmpVal; 
} 
}else{ 
$opts = $options; 
} 
//unset( $options ); 
return $opts; 
} 
}

いくつかの点が考慮されていますが、これは非常に一般的な解決策にすぎません


以下は補足情報です:
例 : 現在の URL アドレス

$url_this = "http://".$_SERVER [&#39;HTTP_HOST&#39;].$_SERVER[&#39;PHP_SELF&#39;]; 
echo $url_this;

を取得する必要があると、次のように表示されます: http://localhost/lu.php

サーバー変数: $_SERVER
注: PHP 4.1.0 以降のバージョンで使用されます。以前のバージョンでは、$HTTP_SERVER_VARS が使用されていました。

$_SERVER は、ヘッダー、パス、スクリプトの場所などの項目を含む配列です。配列のエンティティは Web サーバーによって作成されます。すべてのサーバーがすべてのメッセージを生成するという保証はありません。サーバーは一部のメッセージを無視したり、以下にリストされていない新しいメッセージを生成したりする場合があります。これは、これらの変数の多くが CGI 1.1 仕様で指定されているため、注意深く検討する必要があることを意味します。

これは「スーパーグローバル」、または自動グローバル変数として説明できます。これは、すべてのスクリプトで機能することを意味します。 $HTTP_SERVER_VARS の場合のように、関数またはメソッド内でアクセスするためにグローバル $_SERVER; を使用する必要はありません。

$HTTP_SERVER_VARS には同じ情報が含まれていますが、自動グローバル変数ではありません。 (注: $HTTP_SERVER_VARS と $_SERVER は異なる変数であり、PHP はそれらを異なる方法で処理します。)

register_globals ディレクティブが設定されている場合、つまり $_SERVER と $_SERVER が分離されている場合、これらの変数はすべてのスクリプトでも使用できます。 $HTTP_SERVER_VARS 配列。関連情報については、「レジスタ グローバルの使用」のセキュリティ関連の章を参照してください。これらの個々のグローバル変数は、自動グローバル変数ではありません。

以下にリストされている $_SERVER 要素の一部が使用できない場合があります。コマンドラインから PHP を実行する場合、以下にリストされている要素の一部は有効である (または実際の意味を持たない) ことに注意してください。


"PHP_SELF"
ドキュメント ルートに関連する、現在実行中のスクリプトのファイル名。たとえば、URL アドレス http://example.com/test.php/foo.bar を持つスクリプトで $_SERVER['PHP_SELF'] を使用すると、結果は /test.php/foo.bar になります。

PHP がコマンド ライン モードで実行されている場合、この変数は効果がありません。

"argv"
このスクリプトに渡される引数。スクリプトがコマンド ライン モードで実行されると、argv 変数が C スタイルのコマンド ライン引数としてプログラムに渡されます。 GET メソッドが呼び出されると、この変数には要求されたデータが含まれます。

"argc"
プログラムに渡されるコマンド ライン引数の数が含まれます (コマンド ライン モードで実行している場合)。

"GATEWAY_INTERFACE"
サーバーが使用する CGI 仕様のバージョン。たとえば、「CGI/1.1」です。

'SERVER_NAME'
スクリプトが現在実行されているサーバー ホストの名前。スクリプトが仮想ホスト上で実行されている場合、名前はその仮想ホストに設定された値によって決まります。

'SERVER_SOFTWARE'
サーバーを識別する文字列。リクエストに応答するときにヘッダーに指定されます。

"SERVER_PROTOCOL"
ページをリクエストするときの通信プロトコルの名前とバージョン。たとえば、「HTTP/1.0」です。

"REQUEST_METHOD"
ページにアクセスする際のリクエストメソッド。例: 「GET」、「HEAD」、「POST」、「PUT」。

"QUERY_STRING"
クエリの文字列。

"DOCUMENT_ROOT"
現在実行中のスクリプトが配置されているドキュメント ルート ディレクトリ。サーバー構成ファイルで定義されます。

"HTTP_ACCEPT"
現在のリクエストの Accept: ヘッダーの内容。

"HTTP_ACCEPT_CHARSET"
現在のリクエストの Accept-Charset: ヘッダーの内容。例: 「iso-8859-1,*,utf-8」。

"HTTP_ACCEPT_ENCODING"
現在のリクエストの Accept-Encoding: ヘッダーの内容。例:「gzip」。

"HTTP_ACCEPT_LANGUAGE"
現在のリクエストの Accept-Language: ヘッダーの内容。例:「エン」。

"HTTP_CONNECTION"
接続の内容: 現在のリクエストのヘッダー。例:「キープアライブ」。

"HTTP_HOST"
ホストの内容: 現在のリクエストのヘッダー。

"HTTP_REFERER"
現在のページにリンクされている前のページの URL アドレス。すべてのユーザー エージェント (ブラウザー) がこの変数を設定するわけではなく、一部のユーザー エージェント (ブラウザー) は HTTP_REFERER を手動で変更することもできます。したがって、この変数は常に真であるとは限りません。

"HTTP_USER_AGENT"
User_Agent: 現在のリクエストのヘッダーの内容。この文字列は、このページにアクセスするユーザー エージェントに関する情報を示します。典型的な例は次のとおりです: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。 get_browser() を使用してこの情報を取得することもできます。

“REMOTE_ADDR”
現在のページを閲覧しているユーザーの IP アドレス。

'REMOTE_HOST'
現在のページを閲覧しているユーザーのホスト名。逆ドメイン名解決は、ユーザーの REMOTE_ADDR に基づきます。

注: この変数を作成するには、Web サーバーを構成する必要があります。たとえば、Apache では httpd.conf で HostnameLookups On が必要です。 gethostbyaddr() を参照してください。

"REMOTE_PORT"
ユーザーがサーバーに接続するために使用するポート。

「スクリプトファイル名」
現在実行中のスクリプトの絶対パス名。

"SERVER_ADMIN"
この値は、Apache サーバー構成ファイルの SERVER_ADMIN パラメーターを指定します。スクリプトが仮想ホスト上で実行されている場合、この値はその仮想ホストの値になります。

"SERVER_PORT"
サーバーが使用するポート。デフォルトは「80」です。 SSL セキュア接続を使用する場合、この値は設定した HTTP ポートになります。

"SERVER_SIGNATURE"
サーバーのバージョンと仮想ホスト名を含む文字列。

"PATH_TRANSLATED"
現在のスクリプトが配置されているファイル システムのベース パス (ドキュメント ルートではありません)。これは、サーバーが仮想パスから実際のパスにイメージ化された後の結果です。

"SCRIPT_NAME"
現在のスクリプトのパスが含まれます。これは、ページがそれ自体を指す必要がある場合に便利です。

"REQUEST_URI"
このページにアクセスするために必要な URI。たとえば、「/index.html」です。

"PHP_AUTH_USER"
PHP が Apache モジュール モードで実行され、HTTP 認証機能が使用されている場合、この変数はユーザーが入力したユーザー名になります。

"PHP_AUTH_PW"
PHP が Apache モジュール モードで実行され、HTTP 認証機能が使用されている場合、この変数はユーザーが入力したパスワードになります。

"AUTH_TYPE"
PHP が Apache モジュール モードで実行され、HTTP 認証関数が使用されている場合、この変数は認証のタイプになります。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPでリンクアドレスを置き換える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。