人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpで文字列の一部分を削除したいと考えています。

たとえば下記のようなURLがあるとします。
$test = 'http://youtube.com/watch?v=6jNfOUy9Kp4';

こちらに下記のような「&」による複数のパラメータがついているかどうかを調べて、ついていた場合に削除して代入しなおす方法を教えてください。

【「&」がついている例】
$test = 'http://youtube.com/watch?v=6jNfOUy9Kp4&feature=related&showsearch=0';

左から一番初めの「&」以降のパラメータを削除し、$testを上書きしたいです。
※「&」による複数のパラメータが無い場合はそのままの形で代入したいです。

mb_strpos関数で出来るのでは?というところまで分かるくらいのphp初心者です。

宜しくお願いします。

●質問者: dmt13
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP test URL いるか パラメータ
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● dy7
●25ポイント

すみません、先ほどの回答の形だと、「&」が無い場合に対応していないと思うので、

if( strpos( $test, '&' ) > 0 ){
$test = substr( $test, 0, strpos( $test, '&' ));
}

こちらでいかがでしょうか?

◎質問者からの返答

こちらで問題なく出来ました!有難うございます!


2 ● dy7
●5ポイント

単純に「&」以降を削除するだけで良いのであれば、

$test = substr( $test, 0, strpos( $test, '&' ));

でいかがでしょうか?

◎質問者からの返答

早速返答くださいまして有難うございます!


3 ● Mook
●30ポイント

やり方はいろいろあると思いますが & により分割して、先頭の部分を返すという処理でできそうです。


このような感じでどうでしょうか。

<?php
$test = 'http://youtube.com/watch?v=6jNfOUy9Kp4&feature=related&showsearch=0';
$test = array_shift( preg_split( '/&/', $test ) );
print $test;
?>

http://www.php.net/manual/ja/function.preg-split.php

http://www.php.net/manual/ja/function.array-shift.php

◎質問者からの返答

Mookさんのご返答でも問題なく出来ました!有難うございます!

リンクも参考になりました!


4 ● Committeeman
●30ポイント ベストアンサー

mb_strpos で文字位置を探るなどの手間をかけずとも、もっとシンプルに済ますことのできる関数がある

$test = preg_replace('/&.*/', '', $test);

http://php.net/manual/ja/function.preg-replace.php


上記では正規表現というものを用いて「&で始まる文字列を’’に置き換える(消す)」という事を行っている

正規表現はphpだけでなく多くの言語やスクリプト、編集ソフトなどで使えるテキスト処理用の表現方法

これからもphpを使っていくのであれば学んでいく機会もでてくるであろうから「正規表現」という言葉だけでも覚えておこう

http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%B...

◎質問者からの返答

Committeemanさんのご返答でも問題なく出来ました!

初めてphpの参考書を購入し勉強し始めたところで、お三方の方法がそれぞれで3倍参考になりました!

有難うございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ