


PHP は parse_url と parse_str を使用して URL を解析します。parse_urlparse_str_PHP チュートリアル
php は parse_url と parse_str を使用して URL を解析します。parse_urlparse_str
PHP には、URL の解析に使用できるメソッドが 2 つあり、parse_url と parse_str です。
parse_url
URLを解析してそのコンポーネントを返します
mixed parse_url ( string $url [, int $component = -1 ] )
この関数は URL を解析し、URL に含まれるさまざまなコンポーネントを含む連想配列を返します。
この関数は、指定された URL の有効性を検証するために使用されるのではなく、URL を以下にリストされている部分に分割するだけです。不完全な URL も受け入れられ、parse_url() はそれらをできるだけ正確に解析しようとします。
パラメータ
url 解析する URL。無効な文字は_に置き換えられます。
コンポーネント PHP_URL_SCHEME、PHP_URL_HOST、PHP_URL_PORT、PHP_URL_USER、PHP_URL_PASS、PHP_URL_PATH、PHP_URL_QUERY、または PHP_URL_FRAGMENT のいずれかを指定して、URL の指定された部分の文字列を取得します。 (PHP_URL_PORT として指定された場合を除き、整数値が返されます)。
戻り値
著しく修飾されていない URL の場合、parse_url() は FALSE を返す場合があります。
コンポーネントパラメータが省略された場合、連想配列配列が返され、現在少なくとも 1 つの要素が配列内に存在します。配列内で使用できるキーは次のとおりです:
スキーム - http
のような
ホスト
ポート
ユーザー
パス
パス
クエリ - 疑問符
の後
フラグメント - ハッシュ記号 #
の後
コンポーネント引数が指定されている場合、parse_url() は配列の代わりに文字列 (または PHP_URL_PORT として指定されている場合は整数) を返します。 URL 内に指定されたコンポーネントが存在しない場合は、NULL が返されます。
例
$url = 'http://ユーザー名:パスワード@ホスト名/パス?arg=値#アンカー';
print_r(parse_url($url));
echo parse_url($url, PHP_URL_PATH);
?>
上記のルーチンは次のように出力します:
配列
(
[スキーム] => http
[ホスト] => ホスト名
[ユーザー] => ユーザー名
[パス] => パスワード
[パス] => /パス
[クエリ] => 引数=値
[フラグメント] => アンカー
)
/パス
parse_str
文字列を複数の変数に解析する
void parse_str ( string $str [, array &$arr ] )
str が URL によって渡されたクエリ文字列である場合、それを変数に解析し、現在のスコープに設定します。
現在の QUERY_STRING を取得するには、$_SERVER['QUERY_STRING'] 変数を使用できます。
パラメータ
str 入力文字列。
arr 2 番目の変数 arr が設定されている場合、変数は代わりに配列要素としてこの配列に格納されます。 、
例
$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str);
echo $first // 値
echo $arr[0] // フーバー
; echo $arr[1] // バズ
; parse_str($str, $output);
echo $output['first'] // 値
; echo $output['arr'][0] // foo bar
; echo $output['arr'][1] // バズ
; ?>
少し前に php-resque のソース コードを読んでいたところ、これら 2 つのメソッドが Redis リンクの設定を解析するために非常にうまく使用されていると感じました。
Redis リンクの形式は、redis://user:pass@host:port/db?option1=val1&option2=val2 です。これは URL と同じなので、上記の 2 つの方法を使用して簡単に解析できます。
アドレス: https://github.com/chrisboulton/php-resque/blob/master/lib/Resque/Redis.php
コードは次のとおりです:
/**
* DSN 文字列を解析します。次のいずれかの形式になります:
*
* - ホスト:ポート
* - redis://user:pass@host:port/db?option1=val1&option2=val2
* - tcp://user:pass@host:port/db?option1=val1&option2=val2
*
* 注: DSN の「ユーザー」部分は使用されません。
*
* @param string $dsn DSN 文字列
* @return array DSN コンポーネントの配列。不明なコンポーネントには「false」値が含まれます。例:
* [ホスト、ポート、データベース、ユーザー、パス、オプション]
*/
パブリック静的関数 parseDsn($dsn)
{
if ($dsn == '') {
// 空の DNS 文字列には適切なデフォルトを使用します
$dsn = 'redis://' 。 self::DEFAULT_HOST;
}
$parts = parse_url($dsn);
// URI スキームを確認します
$validSchemes = array('redis', 'tcp');
if (isset($parts['scheme']) && ! in_array($parts['scheme'], $validSchemes)) {
throw new InvalidArgumentException("無効な DSN。サポートされているスキームは " .implode(', ', $validSchemes));
}
// 単純な 'hostname' 形式を許可します。これは `parse_url` がホストではなくパスとして扱います
if ( ! isset($parts['host']) && isset($parts['path'])) {
$parts['ホスト'] = $parts['パス'];
unset($parts['path']);
}
// ポート番号を整数として抽出します
$port = isset($parts['port']) ? intval($parts['port']) : self::DEFAULT_PORT;
// URI の「パス」部分からデータベースを取得します
$database = false;
if (isset($parts['path'])) {
// パスから数字以外の文字を削除します
$database = intval(preg_replace('/[^0-9]/', '', $parts['path']));
}
// 'user' 値と 'pass' 値を抽出します
$user = isset($parts['user']) ? $parts['ユーザー'] : false;
$pass = isset($parts['pass']) ? $parts['pass'] : false;
// クエリ文字列を連想配列に変換します
$options = array();
if (isset($parts['query'])) {
// クエリ文字列を解析して配列に変換します
parse_str($parts['query'], $options);
}
配列を返します(
$parts['ホスト'],
$ポート、
$データベース、
$ユーザー、
$パス、
$オプション、
);
}
上記は PHP が URL を解析するための 2 つの方法です。気に入っていただければ幸いです。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。
