• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:変数参照)

変数参照とハイパーテキストリンクのスクリプトについて

このQ&Aのポイント
  • test1.phpとtest2.phpは文字列をハイパーテキストリンクに変換するスクリプトです。
  • test1.phpは正常に動作しますが、test2.phpは動作しません。原因は、test2.phpで変数$replacementsを正しく参照できないためです。
  • test2.phpの目的を達するためには、変数$replacementsを正しく参照できるように、ereg_replace関数の変数の値が空ではないことを確認する必要があります。

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

  • ベストアンサー
noname#94983
noname#94983
回答No.1

1 test1.phpが動いてtest2.phpが動かない理由はなんでしょうか? test2.phpでは、$msgでパターンにマッチする部分を空の文字列に置き換えている。これでマッチ部分が消えるのは正しい。ただし、 echo $msg . $replacements; これは、単に「置換済みテキストの後に、置換用のパターンを出力する」というだけだ。$replacementsはパターンであって、ここに置換されたテキストが収められるわけではまったくない。ただ'<a href="\\1">\\1</a>'というテキストが書き出されるだけだろうと思う。したがって、置換されたテキストの後に、\1とリンクが表示されるだけだろう。 2 test2.phpの目的を達するためにはどう書けばよいでしょうか? 要するに、パターンにマッチしたテキストを取り出して、これを<a>タグにして最後尾に付け足す、ということだろうか。例えば、こんな感じのことか? <?php //test1.php // start set message $msg = "testtesttesttest ​http://www.example.com​ testtesttesttest"; // end set message // start set generate URL link $patterns = '(https?:\/\/[-_.!~*\'()a-zA-Z0-9;/?:@&=+$,%#]+)'; $result1 = ereg_replace($patterns,"", $msg); $result2 = array(); $find = ereg($patterns, $msg, $result2); // end set generate URL link // start set message echo $result1 . '<a href="' . $result2[0] . '">' . $result2[0] . '</a>'; // end set message ?>

mywatertan
質問者

お礼

ありがとうございます。 置換用のパターンなのですね。 よくわかりました。

関連するQ&A