たとえば下記のようなURLがあるとします。
$test = 'http://youtube.com/watch?v=6jNfOUy9Kp4';
こちらに下記のような「&」による複数のパラメータがついているかどうかを調べて、ついていた場合に削除して代入しなおす方法を教えてください。
【「&」がついている例】
$test = 'http://youtube.com/watch?v=6jNfOUy9Kp4&feature=related&showsearch=0';
左から一番初めの「&」以降のパラメータを削除し、$testを上書きしたいです。
※「&」による複数のパラメータが無い場合はそのままの形で代入したいです。
mb_strpos関数で出来るのでは?というところまで分かるくらいのphp初心者です。
宜しくお願いします。
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...
すみません、先ほどの回答の形だと、「&」が無い場合に対応していないと思うので、
if( strpos( $test, '&' ) > 0 ){ $test = substr( $test, 0, strpos( $test, '&' )); }
こちらでいかがでしょうか?
こちらで問題なく出来ました!有難うございます!
単純に「&」以降を削除するだけで良いのであれば、
$test = substr( $test, 0, strpos( $test, '&' ));
でいかがでしょうか?
早速返答くださいまして有難うございます!
やり方はいろいろあると思いますが & により分割して、先頭の部分を返すという処理でできそうです。
このような感じでどうでしょうか。
<?php $test = 'http://youtube.com/watch?v=6jNfOUy9Kp4&feature=related&showsearch=0'; $test = array_shift( preg_split( '/&/', $test ) ); print $test; ?>
Mookさんのご返答でも問題なく出来ました!有難うございます!
リンクも参考になりました!
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倍参考になりました!
有難うございます!
Committeemanさんのご返答でも問題なく出来ました!
初めてphpの参考書を購入し勉強し始めたところで、お三方の方法がそれぞれで3倍参考になりました!
有難うございます!