![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
PHPバージョン5.2.4を使用しています。
http://www.hoge.com/abc/f.php
というURLを「/」で区切った結果を取得したいのですが、
普通にsplit('/', $url);の条件でやってしまうと
http:のあとの「//」があるので、そこも分割してしまいうまくいきません・・・
この場合、スラッシュ1つで区切って3つに分割したいのです。
スラッシュが1つの場合だけ区切るという正規表現はどのようになるのでしょうか?
取得したい結果
http://www.hoge.com
abc
f.php
No.5ベストアンサー
- 回答日時:
splitで使用できる正規表現は ereg_* と同じものであり、
(?!...) のような拡張は受け付けません。
PHP: split - Manual
"パラメータ
pattern
大文字小文字を区別する正規表現。
正規表現で特殊文字とみなされる文字を分割したい場合、それらを まずエスケープする必要があります。split() (または他の正規表現関数に関して)の動作が何か変であると感じたならば、 PHP 配布ファイルの regex/ サブディレクトリにあるファイル regex.7 を読んでください。このファイルは man ページ形式となっており、読むには man /usr/local/src/regex/regex.7 のようにします。"
http://php.benscom.com/manual/ja/function.split. …
preg_splitを使えば拡張表記を使用できます。
PHP: preg_split - Manual
http://jp.php.net/preg_split
<?php
$url = 'http://www.hoge.com/abc/f.php';
$parts = preg_split("#(?<!/)/(?!/)#", $url);
print_r($parts);
実行結果:
Array
(
[0] => http://www.hoge.com
[1] => abc
[2] => f.php
)
ご返答ありがとうございます。
なるほど、そもそもsplitじゃ無理だということでしたか・・・
そのやり方でできました。ありがとうございます。
No.4
- 回答日時:
・ 配列を返さないといけないとしたら、関数を作ってみてはどうでしょうか。
次は、JavaScriptの例で参考にはならないかも知れませんが、
------------------------------------------------------------
<html>
<title>split1.html</title>
<script language="javascript">
<!--
function check_split(){
var ss="http://www.hoge.com/abc/f.php";
alert(getArrayFromURL(ss));
}
function getArrayFromURL(url){
ss2 = url.split("http://")[1].split("/");
ss3 = ss2.splice(0,1,"http://"+ss2[0]);
return ss2;
}
//-->
</script>
<body bgcolor="#fff8dc" onload="check_split()">
<h3>split1.html</h3>
<hr />
</body>
</html>
No.3
- 回答日時:
・ 直後に/が続かないということで、
split('/(?!/)', $url);
でうまく行くのではないでしょうか。
・ ちょっと面倒ですが、
1. 最初は、//でsplitし、
www.hoge.com/abc/f.php
を取得し、
2. 次にそれを、/でsplitする。
3. 結果の配列の要素0の文字列
www.hoge.com
を修正し、(http://を加える)
http://www.hoge.com
とする、ではどうでしょうか。
ご返答ありがとうございます。
試してみたのですが、
split('/(?!/)', $url);
だと
Warning: split() [function.split]: REG_BADRPT in
というエラーがでてしまいます・・・
下の//で分解してからやるやり方だと確かにできるのですが、
自分のプログラムだとそういうやり方だとなにかと困るので
なんとかして上のようなやり方でできないものかと・・・考えています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SEO googleサーチコンソールで、重複URLが多数発生、その修正方法について 2 2023/06/23 16:15
- PHP PHPを使って、別サイトの一部を取得して表示したいのです。。 1 2023/01/18 21:45
- JavaScript javascriptで文字分割は、 split() などメソッド不要??? 4 2023/02/06 22:50
- PHP PHP MySql ページング 2 2022/09/20 06:38
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- 電子マネー・電子決済 状況が特殊な場合でのおすすめのICカードとかクレカとかの組み合わせは? 自宅の交通ICカード圈は(1 2 2023/05/28 15:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
、"(ダブルクォーテーション)...
-
VBAのコマンドボタンの文字列の...
-
文字の入力で横バー上段、中断...
-
ソースコードの1行が長いとき...
-
改行について
-
データベースにデータを挿入す...
-
選択したセルでダブルクリック...
-
VBSのADODB.Streamで先頭に「追...
-
【VBA】エクセルで最後の不要な...
-
fscanfについて
-
ExcelVBAでメールを作成してメ...
-
全角、半角、改行コードが混在...
-
全角英数文字が嫌われる理由を...
-
テキストファイルから改行コー...
-
JavaMail,本文中の改行について
-
改行を読み飛ばす
-
カンマの含まれる文字列の数値...
-
マクロでセル内の改行を削除す...
-
「続行するには何かキーを押し...
-
エスケープ文字の復帰(¥r)と...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
、"(ダブルクォーテーション)...
-
VBAを使ってHTMLソースから特定...
-
PHPで変数から1行目だけを取得...
-
Excelで数字のみを2倍3倍にする...
-
preg_matchでエラーが出ます。
-
正規表現でシングルクォーテー...
-
URLを抽出する正規表現
-
正規表現パターンの記入方法に...
-
PHPで<a>タグ内からURLと文字を...
-
PHP 複数行の正規表現
-
PHPの正規表現で住所を分けるに...
-
電話番号のチェック ハイフン...
-
ereg_match関数について
-
正規表現で「0」のみ抽出
-
PHPメールフォーム URLと半角...
-
preg_matchで Warning: Undefin...
-
phpでメールアドレス入力の入力...
-
正規表現で特定のHTMLタグのク...
-
preg_matchで指定ファイルのタ...
-
変数に指定文字列が含まれると...
おすすめ情報