![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
POST /xxxxxx/xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/444444444444444 HTTP/1.1
GET /xxxxxx/xxxxxx/44444444444444/ HTTP/1.1
GET /xxxxxx/ HTTP/1.0
GET /xxxxxx/P707 HTTP/1.1
GET /xxxxxx/P707_0123 HTTP/1.1
GET /xxxxxx/xxxxxx/?xxxxxx=444444444444444&xxxxxx= HTTP/1.1
GET /xxxxxx/xxxxxx/xxxxxx/444444444444444/?xxxxxx=123456789 HTTP/1.1
GET /xxxxxx/xxxxxx/444444444444444/?xxxxxx=ABC_123_3&xxxxxx=ABC_123_3&xxxxxx=123456789 HTTP/1.1
これらは、とあるサーバーのログなのですが、
上記の内容を、正規表現によって以下のように置換を行っています。
POST /xxxxxx/xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/ HTTP/1.0
GET /xxxxxx/ HTTP/1.1
GET /xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/ HTTP/1.1
これらの内容を秀丸(jre32互換)で行っていたのですが、
PHP(perl互換)で実装をしょうと、正規表現を用いて、行ってみたところエラーが出てしまいました。
検索
([GET|POST]) /([a-zA-Z]+[0-9]?/)?([a-zA-Z]+[0-9]?/)?([a-zA-Z]+[0-9]?/)?([a-zA-Z]+[0-9]?/)?[^\s]*\s
置換
\1 /\2\3\4\5
(\5のあとに半角スペースあり)
ひとくちに正規表現といっても、jre32互換かperl互換かで挙動が違うのだと思いますが、
どこをどのように直したら良いのか、よくわかりませんので
教えて頂けないでしょうか?(この正規表現でなくても同じ結果が得られるなら、それでも良いので・・・)
また今回、2回正規表現をしても良いので
POST /xxxxxx/xxxxxx/xxxxxx/ HTTP/1.1
GET /xxxxxx/xxxxxx/ HTTP/1.1
↓
/xxxxxx/xxxxxx/xxxxxx/
/xxxxxx/xxxxxx/
といった具合にもしたいのです。(1回でできれば、一番いいのですが・・・・)
No.1ベストアンサー
- 回答日時:
正規表現はそれで良いです。
・プログラムの中で正規表現をどう使うか
・置換後の文字列をどう指定するか
という正規表現以外のPHPの知識不足です。
たとえば、
$line = 読み込んだデータ;
$line = preg_replace('!([GET|POST]) /([a-zA-Z]+[0-9]?/)?([a-zA-Z]+[0-9]?/)?([a-zA-Z]+[0-9]?/)?([a-zA-Z]+[0-9]?/)?[^\s]*\s!','$1 /$2$3$4$5 ',$line);
こんな風にプログラムを書きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ドメイン・サーバー・クラウドサービス 【至急】 メール応募した求人のドメインを間違えて入力して送信していました。 例↓ 誤: xxxxxx 2 2023/08/09 03:19
- 数学 数独の次の一手 2 2022/08/31 17:17
- オープンソース jqコマンドでor条件でIPを指定する方法について 1 2023/01/13 12:05
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- その他(パソコン・スマホ・電化製品) ソフトバンクのオンラインショップの予約商品について 予約した日時はこれです 2023年01月16日 2 2023/01/20 08:27
- Outlook(アウトルック) outlookの送信エラーについて 1 2022/05/13 12:04
- Visual Basic(VBA) Excel VBA ユーザーフォーム1のコンボボックスに別ブックの値を反映させたいです。 6 2023/03/21 16:12
- フランス語 困っています、保険解約書類が送られ、よく分かりません Signature du co-Adhéren 2 2023/02/19 21:06
- 化学 化学 容量パーセント濃度17v/v%の硝酸ナトリウム(分子量85)水溶液がある。この水溶液の密度が1 2 2022/06/18 09:29
- フランス語 Aux plus de という熟語の意味 1 2022/06/24 18:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでcookieがうまく保存されない
-
PHPについて。
-
フォームで戻った際に入力済み...
-
$filePath = './user_img/' . $...
-
PHPからCSVをアップロード後、m...
-
PHPのエラーの解消法について教...
-
php エラー
-
phpのheader("Location:#pos")...
-
PHPで画像の渡しが上手く行きま...
-
reuterの記事をbeautiful.soup....
-
ワードプレスサイト PHP8.0.25...
-
phpのメールフォームの完了画面...
-
PHPSpreadsheetを使って関数を...
-
PHP MySql ページング
-
phpinfo で MySQL のバージョン...
-
PHP MySQLに画像を直接保存
-
[php初心者]サイトを見てデータ...
-
phpに関わる所での、form actio...
-
ゆゆにゃ。
-
【初心者】XAMPPのapacheの(恐...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゆゆにゃ。
-
phpでcookieがうまく保存されない
-
フォームで戻った際に入力済み...
-
PHP8を使うと、大量のWarningが...
-
PHPで画像の渡しが上手く行きま...
-
PHPのエラーの解消法について教...
-
PHPのセッション有効期限について
-
入力した部分を表示させたまま...
-
PHPSpreadsheetを使って関数を...
-
phpinfo で MySQL のバージョン...
-
PostgreSQLからCSV形式でエクス...
-
ワードプレスサイト PHP8.0.25...
-
PHP MySQLに画像を直接保存
-
php 入力画面から確認表示画面...
-
if(preg_match("/[^0-9]/",$gu_...
-
htmlspecialcharsが機能してい...
-
どうして送信されないのでしょ...
-
php 確認表示画面で値をSESSION...
-
PHPを使って、別サイトの一部を...
-
PHP MySql ページング
おすすめ情報