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


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

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

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

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

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

宜しくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2010/05/30 14:53:07
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Committeeman No.4

回答回数153ベストアンサー獲得回数19

ポイント30pt

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...

id:dmt13

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

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

有難うございます!

2010/05/30 14:48:10

その他の回答3件)

id:dy7 No.1

回答回数5ベストアンサー獲得回数1

ポイント25pt

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

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

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

id:dmt13

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

2010/05/30 14:43:49
id:dy7 No.2

回答回数5ベストアンサー獲得回数1

ポイント5pt

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

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

でいかがでしょうか?

id:dmt13

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

2010/05/30 14:43:52
id:Mook No.3

回答回数1314ベストアンサー獲得回数393

ポイント30pt

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


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

<?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

id:dmt13

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

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

2010/05/30 14:45:05
id:Committeeman No.4

回答回数153ベストアンサー獲得回数19ここでベストアンサー

ポイント30pt

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...

id:dmt13

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

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

有難うございます!

2010/05/30 14:48:10

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません