• ベストアンサー

PHP ある文字列以下を無視(削除)

/dir1/index.html?aaa=1 /dir2/index.html?bbb=2 /dir3/index.html?ccc=3 上記のような変数設定のURLがあり、?以降に法則は無く、毎回何が入るか分かりません。 そこで文字列操作、正規表現、などを用いて以下のように整形したいのです。 /dir1/index.html /dir2/index.html /dir3/index.html ?以降を取り去った形で取得する方法をご教授願います。

  • tkmkok
  • お礼率87% (128/146)
  • PHP
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

こんばんは。 PHPで正規表現を使うでいいんですかね??? $url=preg_replace('/\?.*/', '', '/dir1/index.html?aaa=1'); とかって事? ほんまかいな・・・。

tkmkok
質問者

お礼

完璧です・・・!なるほど、これで?以降は消せる訳ですね。正規表現のおすすめサイトとかありましたら是非教えてください!

その他の回答 (1)

回答No.2

こんばんは。 >おすすめサイトとかありましたら是非教えてください! チェックするなら、 http://www.rider-n.sakura.ne.jp/regexp/regexp.php とか。 PHPの正規表現は、Perl互換なので、 http://www.kt.rim.or.jp/~kbk/regex/regex.html ですかね・・・。

関連するQ&A

  • 正規表現でシングルクォーテーションで囲まれた文字列

    VB.NET で開発を行っています。 シングルクォーテーションで囲まれた文字列の検索を行いたいのですが正規表現の記述が良くわからないので困っています。 たとえば 'AAA' + 'BBB' + 'CCC' 上記のの文字列から「'AAA'」「'BBB'」「'CCC'」も検索したいのですが,パターンとして「'.*'」を用いると「'AAA' + 'BBB' + 'CCC'」が返ってきます。 どなたかご教授ください。よろしくお願いします。

  • 2回以上繰り返される文字列の削除について

    以下の文字列(置換前)で、-aaa について複数存在しているので、 最初の -aaa を残して残りの -aaa をすべて削除したいと考えています。 1回の正規表現+置換で行いたいのですが、どのようにいすればよいでしょうか? 【置換前】 -bbb -aaa -ccc -aaa -ddd -eee -aaa -fff 【置換後】 -bbb -aaa -ccc -ddd -eee -fff ちなみに、複数回の正規表現+置換を使ってよい場合は、 while (m/( -aaa.*) -aaa/) { s/( -aaa.*) -aaa/$1/; } でできると考えています。(動作確認まではしていないので間違ってるかも)

    • ベストアンサー
    • Perl
  • ''で囲まれていない文字列にマッチする正規表現

    下記のような文字列($str)に対して置換を行い、 my $str = qq{ AAA = BBB - 'CCC' }; $str =~ s/★正規表現★/sprintf("DDD(%s)",$1)/xmsge ; 変換後 $str = DDD(AAA) = DDD(BBB) - 'CCC' ; を実現する★正規表現★を書きたいと思っています。  ・AAA,BBB,CCCは[\w]で構成される文字列です。 ですが、シングルクォーテーション('')で囲まれていない文字列にマッチする正規表現が書けなく困っています。 一度、シングルクォーテーションで囲まれているものも含めて全てDDD()をつけて、そのあとで、シングルクォーテーションを含むものは元に戻すことでやりたいことは実現できているのですが、1行で実現できる方法を探しています。 アドバイスよろしくお願いします。

    • ベストアンサー
    • Perl
  • 文字列から特定の文字を抜き出す

    こんにちは。 シェルスクリプトで文字列から特定の文字を抜き出し、 変数に入れたいのですが、うまくいきません。 申し訳ありませんが、アドバイスをお願いいたします。 文字列 $moji=aaa_bbb_ccc (文字は変動します) $a=aaa $b=bbb $c=ccc と"_"毎に変数に代入したい。 echo $moji | awk -F_ '{print $2}' で文字を標準出力に取り出すことはできるのですが、 そこから変数に代入する方法がいまいち分かりません。

  • 文字列を配列定義に使用するには

    文字列を配列の定義に使用したいのですが、可能でしょうか? 具体的には以下のような内容です。  $AAA = array("name"=>"山田","val"=>"10"); とすると変数$AAAは配列になります。  $BBB = 'array("name"=>"佐藤","val"=>"20")'; とすると変数$BBBは文字列になります。  $CCC = $BBB; と変数$CCCに代入した場合に、 変数$CCCを配列として認識させたいです。 つまり  print $CCC[name]; //佐藤  print $CCC[val]; //20 というように出力させたいのですが、 根本的に可能なのでしょうか…? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 何度も出現する文字列AAのうち、3番目と4番目のAAの間にある文字列を得たい

    以下のようなHTMLから、 <tr><td>AAA<td>BBB<td>CCC<td>DDD<td>EEE<td></tr> CCC という文字列だけを取り出したいとき、Perl、または 正規表現ではどのように記述したらよいのでしょうか?? Index関数を使ってみたのですが、うまくいきませんでした。 アドバイスをよろしくお願いします。

    • ベストアンサー
    • Perl
  • 【ruby】subの使い方

    文字列から最初の/~/までを切り取りたいです。 たとえば、"/aaa/bbb/ccc"の場合、"/aaa/"です。 そこで、subを使って以下の様に書いてみました。 puts "/aaa/bbb/ccc".sub(/(\/.*?\/)/,'\1') しかし、/aaa/bbb/cccと表示され、期待した結果が得られません。 以下の様にすると、 /(\/.*?\/)/=~"/aaa/bbb/ccc" puts $1 期待通り/aaa/が表示されるのですが、正規表現はsubのときと同じだし、 subの使い方の何が悪いのかわからなくなってしまいました。 ご指導のほど、宜しくお願いいたします。

    • ベストアンサー
    • Ruby
  • 正規表現について

    正規表現について勉強しているのですが、 $aaa = "http://あいうえお.こむ/"; $bbb = "http://www.あいうえお.こむ/"; $ccc = "あいうえお.こむ/"; 同じドメイン名ですが、それぞれ変数に入っている値は違います。 これらのドメイン部分を取り出す正規表現はどのようになるのでしょうか。

    • 締切済み
    • PHP
  • 文字列検索のAND条件を引数にしたい

    Perl初心者です。 指定したファイルの中から指定した文字列の入っている行を取得したいのですが、 open(FL, $ARGV[0]); while (<FL>) { if ($_ =~ /$ARGV[1]/) { print $_; } } close(FL); としたとき、 $ARGV[1]に aaa/bbb/ccc と入れてaaaかつbbbかつcccを含む行としたいのですが、うまく動作しません。 このような場合がGREPとかのコマンドを使ったほうがよいのでしょうか? 別の処理も組み込みたいので、できればperlで書きたいのですが、正規表現の文字列を引数で与えるようなことはできるのでしょうか? よろしく御願いします。

    • ベストアンサー
    • Perl
  • [VBA] "と,を含む文字列を変数に取り込む

    こちらの識者の方々にはいつもお世話になっています。 VBAの質問です。 環境は下記になります。 OS=windows7 pro 64bit Office=Excel2010(14.0.7128.5000) ・やりたいこと "aaa、bbb、ccc","2016/07/01","2016/07/01" 上記文字列を変数tmpに取り込む場合どのように記述すればよいでしょうか? ダブルクォートを含む場合はさらにダブルクォートを二つ並べてエスケープする。とあったので、 tmp="""aaa、bbb、ccc","2016/07/01","2016/07/01""" としたのですが通りませんでした。 このような場合の例文を教えていただけますでしょうか。 変数tmpはstring型で宣言しています。 質問に不備不足等ございましたらご指摘ください。 ご面倒お掛けしますがよろしくお願いします。

専門家に質問してみよう