[解決済み] PHPでファイルシステムのパス文字列を結合するには?
2023-06-06 22:32:32
質問
PHP には、パス文字列をインテリジェントに結合するための組み込み関数がありますか?この関数は
abc/de/
と
/fg/x.php
を引数にとると
abc/de/fg/x.php
を返すべきであり、同じ結果を得るには
abc/de
と
fg/x.php
をその関数の引数として指定します。
そうでない場合、利用可能なクラスはあるのでしょうか?また、パスを分割したり、パスの一部を削除したりするのにも有効かもしれません。もし何か書かれたのであれば、ここでコードを共有していただけませんか?
常に
/
を使ってもいいのですが、私はLinux専用にコーディングしています。
Pythonでは
os.path.join
があり、これは素晴らしい。
どのように解決するのですか?
<ブロッククオートこれは人気のある質問のようで、コメント欄は機能提案やバグ報告で埋め尽くされています...。このコードでできることは、2つの文字列をスラッシュで結合し、その間にスラッシュを重複させないことだけです。それだけです。それ以上でも以下でもありません。ハードディスク上の実際のパスを評価するわけでもなく、最初のスラッシュを実際に保持するわけでもありません (必要に応じてスラッシュを追加してください。少なくとも、このコードが常に文字列を返すことは確かです)。 のない のない文字列を返すことを確認できます)。
join('/', array(trim("abc/de/", '/'), trim("/fg/x.php", '/')));
最終的な結果は常に、最初と最後にスラッシュがなく、内部にダブルスラッシュがないパスになります。これを利用して自由に関数を作ってください。
編集 上記のスニペットのための柔軟な関数ラッパーを紹介します。配列や個別の引数として、必要なだけのパスのスニペットを渡すことができます。
function joinPaths() {
$args = func_get_args();
$paths = array();
foreach ($args as $arg) {
$paths = array_merge($paths, (array)$arg);
}
$paths = array_map(create_function('$p', 'return trim($p, "/");'), $paths);
$paths = array_filter($paths);
return join('/', $paths);
}
echo joinPaths(array('my/path', 'is', '/an/array'));
//or
echo joinPaths('my/paths/', '/are/', 'a/r/g/u/m/e/n/t/s/');
:o)
関連
-
[解決済み】新しいPHPMailerはPHPMailerAutoload.phpが必要?
-
[解決済み】Chrome net::ERR_INCOMPLETE_CHUNKED_ENCODING エラーが発生しました。
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】mysqli_result クラスのオブジェクトを文字列に変換できない
-
[解決済み】変な電話番号を生成するフェイカー?
-
[解決済み】 $_SERVER['DOCUMENT_ROOT'] と $_SERVER['HTTP_HOST'] の違いについて]
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】mysqli_select_db()は、パラメータ1がmysqliであることを期待し、文字列が与えられる。
-
[解決済み】phpMyAdmin: シークレットパスフレーズ?
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み】書き込みコンテキストでメソッドの戻り値を使用することができない
-
[解決済み] オートロードとは何ですか; spl_autoload、__autoload、spl_autoload_register はどのように使うのですか?