• ベストアンサー

preg_replaceについての質問です

掲示板用のスクリプトなんですが、 >>(数字) をURLに変換するのはどうすればいいのでしょう? $message = preg_replace("/>>(\d+)/","<a href=\"#$1\">&gt;&gt;$1</a>",$message);

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

  • ベストアンサー
  • 4017B
  • ベストアンサー率73% (1306/1777)
回答No.1

え~っと、とりあえず… $message = preg_replace( '/>>(\d+)/', '<a href="#$1">&gt;&gt;$1</a>', $message ); ~みたいに " を ' に書き換えてみてください。それでとりあえずは問題無く通るはずです。 P.S. この件に限った話ではありませんが、PHPでコード記述をする際には国籍宗教民族などに関係無く、文字列を引用符で代入指定する場合には必ず全て ' で、つまり「シングルクォート」囲う様にしてください。 - "参考リンク": https://sites.google.com/site/auroralrays/hayamihyou/asciicode CやJS系、或いはPerlなどから来た人は無意識に「引用符は "" で」という習慣付けがなされていますが。少なくともPHPでは「ダブルクォート」はほとんど意味が無く、逆にエラーの原因になるだけなので、基本的にはそんなモノは存在しないと考えてコード記述していった方が良いです。 解説本やweb記事などでは「""で囲うと中身に変数が使えます!」みたいな、さも絶大なメリットがあるかの様に解説しているモノがほとんどですが…実際のPHPコーディング作業を鑑みた場合、圧倒的にデメリットの方が多くてメリットはほとんどありません。

nennneko5787
質問者

お礼

ありがとうございます。解決しました

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • preg_replace

    $img_ref = '<a target="_blank" href="http://aaa/aaa/.com/'.$_POST[bbs].'/img/'.$_POST['key'].$imgnum.$tail.'">'; 上記みたいな画像掲示板のスクリプトの画像URLリンク先を示す箇所で、preg_replaceを使って「http://」と「aaa/aaa.com」の間にbbb/bbb/image.cgi?を入れたいと思います。 ↓こんな感じかなーと思いつつあやっぱりできません。 $img_ref = preg_replace("/(https?):\/\/([\w;\/\?:\@&=\+\$,\-\.!~\*'\(\)%#]+)/", "<a href=\"$1://bbb/bbb/image.cgi?$2\" target=\"_blank\">", $img_ref); だれか知ってる方何卒宜しくお願いします。

    • ベストアンサー
    • PHP
  • preg_matrchとpreg_replace

    $settings['link_url3'] = preg_replace("/\//","\\\/",$settings['site_url3']); $url = "http://www.google.co.jp/"; $remote = @fopen($url, "r") or myerror("remote URLをオープンできません"); while ($html = fread($remote,1024)) { if (preg_match("/${settings['link_url3']}/i",$html)) {$found=$found + 1; break;} } という文があったのですが、preg_replaceとpreg_matchのところがいまいちよく解りません。 (preg_replaceとpreg_matchの中の /i とか /\// とか \\\/ の部分が・・・。)

    • ベストアンサー
    • PHP
  • preg_replaceについて

    こんにちは。 PHPのプログラミングで、preg_replaceを使用したいのですが、(どのようなものかはわかっています)使用方法がわかりません。 某スクリプトを見てみたところ、 (:\/\/\S+?) や、 (.*?) など、わけの分からないものがたくさん出てきました。 どこのサイトを見ても、まったくわからなかったので、 わかる方、詳しくご教授くだされば幸いです。

    • ベストアンサー
    • PHP
  • PHP preg_replace のリンク作成

    PHPで作成している掲示板にて、 本文中の「>>5」を押すと、A_id=10&B_id=3 のメッセージを表示する機能を作っています。 10が「A_id」となります。 イメージ:http://XXXX.jp/show.php?A_id=10&B_id=3 $str = preg_replace('/^>>([0-9]+)/','<a href="show.php?A_id=\\1&B_id=★">\\0</a>',$str); A_id=\\1 には10など数字が設定できてます。 B_id=の★部分に、3などの数値を「変数」で設定することができません。 ($B_id_num など) どのようにすればよいのでしょうか?

    • ベストアンサー
    • PHP
  • phpでpreg_replaceで次のような条件の文字を置換したいのですが…

    <a href="jump?url= *1 " target="_blank"> *2 </a> というAタグになっている文字列を *2 だけのテキストにしたいと思っています。 preg_replaceでの正規表現での条件がわかりません…。

    • ベストアンサー
    • PHP
  • preg_replace 後方参照

    preg_replace関数の外で後方参照を行うことはできないですか? $str = '1234abcde' $str = preg_replace("/^(\d+)/", "", $str); この結果は、$str = 'abcde' ですが、()内の数字つまり1234をpreg_replaceの外で確認するには、 $matches = array(); if(preg_match("/^(\d+)/", $str, $matches)){  $str = preg_replace("/^\d+/", "", $str);  $tmp = $matches[1]; //参照 } という風にpreg_matchと併用するしか方法はないのでしょうか? (  perl でいう $str =~ s/^(\d+)//; $tmp = $1; というようなことをしたい。 )

    • ベストアンサー
    • PHP
  • preg_replaceについて

    $text = "今日財布を拾った。"; $value = "100円"; $pattern = "/(今日).*(を拾った。)/"; $replace = sprintf("\\1%s\\2"); $text = preg_replace($pattern, $replace, $text); のような処理を行ったとき、 うまく$textに結果が格納されません。 $valueの最初の文字が数字で無い場合は うまくいきますが、"100円"のように数字で 始まっていると、うまくいきません。 良い回避方法は無いでしょうか?

    • ベストアンサー
    • PHP
  • preg_replaceがうまくできない

    <br />を\nに置き換えてやりたいと思っています。 $a = preg_replace("<br\s/>", "\n", $a); としたのですが、 変換前が あ<br />い 変換後が あ< >い となりました。 <>が括っているものとしてとられているようでしたので、次のように\でエスケープしてみました。 $a = preg_replace("\<br\s/\>", "\n", $a); そうしたら変換後は何も出てきませんでした。(データがなかった) そこで $a = preg_replace("/<br\s\/>/", "\n", $a); としてみたのですが、変換前と変わりませんでした \sを普通に半角スペースにもしてみましたし、括っているダブルクオーテーションをシングルクオーテーションに変えてもみましたが、結果は同じでした。 <br />全体を\nに変換するにはどうすればいいでしょうか。

    • ベストアンサー
    • PHP
  • phpのpreg_replaceで質問です

    お世話になります phpのpreg_replaceで質問です 下記の様な記述にて文字列の置換をしています $body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/",$text); コレを改良してcidの次に入る値で処理を分けたいのですが、うまくいきません。 どなたかご教授お願い致します $arr = array("gif","jpg"."png"); $body = preg_replace("/cid:(\d{2,})@(\d{6}).(\d{6})/","/bl/id/$1/$arr[$1]",$text); 宜しくお願い致します

    • ベストアンサー
    • PHP
  • preg_replace ereg_replace

    いつもお世話になっております。 データを抽出する前にサニタイズが必要となり、 実行する処理で、 $rep = "/\\\/"; $arr = array('data1' => 'A', 'data2' => '\\\\\\'); $ret = preg_replace($rep , "\\\\\\" ,$arr ); $ret = ereg_replace("'", "\'" ,$ret); preg_replaceは配列で戻ってくる事は知っているのですが、 ereg_replaceは配列で戻ってくるのでしょうか。 お手数ですが、宜しくお願い致します。

    • ベストアンサー
    • PHP