文字の置き換えや削除について - PHPプロ!Q&A掲示板

2843

  • 0P

文字の置き換えや削除について

質問日時 / 2010年8月20日 02:31 (最終編集:8月20日 03:21)    回答数 / 4件

Questioner:  Liver  このエントリーをはてなブックマークに追加 

キーワード / str_replace    trim   

このフォーラムを初めて利用するPHP初心者です。
使い方が間違っていましたらご指摘ください。

ある文字列を置き換えする時、str_replace() や trim() などの使い方は何となく理解できたのですが、他にも色々な方法がありそうで、どの方法がもっとも効率よく処理が早いのか分かりません。

具体的にはURLの置き換えです。

例)Youtubeの動画URLからIDだけ取り出したい
http://www.youtube.com/watch?v=hgkklBeFOnR&feature=player_embedded

今の私の知識では、str_replace()を使って、http://www.youtube.com/watch?v= と &feature=player_embedded を空白に置き換えるという処理で実現させています。

1.http://www.youtube.com/watch?v=hgkklBeFOnR&feature=player_embedded
2.hgkklBeFOnR&feature=player_embedded
3.hgkklBeFOnR

無駄なことをしている気がしてならないので、何とか人前に出しても恥ずかしくない方法をご教授ください。

・動画IDの長さは一定の範囲ではあるものの不定
・動画IDの前後の文字列は文字も長さも一定
・処理の関数にはこだわりません

この質問への意見の募集は締め切られ、ポイントは既に配分されました。
意見を投稿することはできますが、ポイントを受け取ることはできません。



ツリー一覧

┣A01galluがると申します。 やり方は色々あろうかと思いますが
┣A02NurseAngelこの意見は投稿者によって削除されました。
┣A03magicflute2現在表示しているページのクエリを取得する場合 >>CO
┣A04yuukiこれでどうでしょう? >>CODE <?php $url = 'ht
┗A05Liverがるさん、magicflute2さん、yuukiさん、ご返答ありが

回答一覧

並び替え:

A01 参考になった
answerergallu [8月20日 07:51]

がると申します。
やり方は色々あろうかと思いますが。
例えば私なら。$uriという変数にURIが入っていると仮定して
  1. list($dummy, $wk) = explode('?', $uri);  // ?より手前の不要な部分を切り取る
  2.   $awk = explode('&', $wk); // CGIパラメタをとりあえず切り取る
  3.   $id = '';
  4.   foreach($awk as $wk) {
  5.     // v=で始まる文字列なら
  6.     if (0 === strncmp($wk, 'v=', 2)) {
  7.       list($dummy, $id) = explode('=', $wk);
  8.       break;
  9.     }
  10.   }
  11.   print "idは {$id} です。\n";
explodeを多用する感じですかね。

以上、なにかの参考にでもなれば、と思います。

この意見に回答する

ツリーへ TOPへ

A02
answererNurseAngel [8月20日 09:56]

この意見は投稿者によって削除されました。

ツリーへ TOPへ

A03 参考になった
answerermagicflute2 [8月20日 10:10]

現在表示しているページのクエリを取得する場合
  1. <?php
  2. $_SERVER['QUERY_STRING'] --> parse_str() --> $result['v']
URLを表す文字列から取得する場合
  1. <?php
  2. $url = 'http://example.com/?v=xxxx&feature=xxxx';
  3. $tmp = parse_url($url) --> parse_str($tmp['query']$result) --> $result['v']
クエリ部分の再構築1
  1. <?php
  2. $arr_assoc --> http_build_query($arr_assoc)
クエリ部分の再構築2
  1. <?php
  2. $param_arr = array('xxx') --> $query=vsprintf('?v=%s'$param_arr);

この意見に回答する

ツリーへ TOPへ

A04 満足
answereryuuki [8月20日 10:14] (最終編集:8月20日 10:20)

これでどうでしょう?

  1. <?php
  2. $url = 'http://www.youtube.com/watch?v=hgkklBeFOnR&feature=player_embedded';
  3. parse_str(parse_url($url,PHP_URL_QUERY),$query_array);
  4. print_r($query_array);
  5. ?>

この意見に回答する

ツリーへ TOPへ

A05
answererLiver [8月21日 02:39]

がるさん、magicflute2さん、yuukiさん、ご返答ありがとうございます。

yuukiさんに提示いただいたコードで、思い通りの表示ができました。


最初に言っておくべきでしたが、PHPを勉強したことがなく、CMSで利用する機会が出てきたため、必要に応じて調べながら使っているという程度なのです。
なので、他のコードや関数は今のところ全てを理解できず、表示を再現できていません。

変数の代入や、そういった事も分からない状態なので、このサイトを利用しながらもう少し試してみます。

初歩的な質問にも関わらず、ご親切に回答をいただきましてあるがとうございました。
色々な方法があるものだと、とても勉強になりました。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
PHPのHTML埋め込み記述について
 このエントリーをはてなブックマークに追加 
A
$_POST["data"] == "男" ? $val = "checked" : $val = "" ; の意味は以下と同じです。 if($_POST["data"] == "男"){ $val = "checked; } e...

>>続きを読む

kende様のご指摘通り、三項演算子を使用する際には、コードの複雑度などを考慮する必要がありますね。書きやすさと共に可読性も追求したいところですね。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)