※ ChatGPTを利用し、要約された質問です(原文:変数参照)
変数参照とハイパーテキストリンクのスクリプトについて
このQ&Aのポイント
test1.phpとtest2.phpは文字列をハイパーテキストリンクに変換するスクリプトです。
test1.phpは正常に動作しますが、test2.phpは動作しません。原因は、test2.phpで変数$replacementsを正しく参照できないためです。
test2.phpの目的を達するためには、変数$replacementsを正しく参照できるように、ereg_replace関数の変数の値が空ではないことを確認する必要があります。
test1.phpは文字列をハイパーテキストリンクに変換するスクリプトです。
これはうまく動いています。
<?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;/?:@&=+$,%#]+)';
$replacements = '<a href="\\1">\\1</a>';
$msg = ereg_replace($patterns, $replacements, $msg);
// end set generate URL link
// start set message
echo $msg;
// end set message
?>
test2.phpは文字列をハイパーテキストリンクに変換して最後尾に付加するスクリプトです。
これは動きません。
$replacementsにセットされたはずの変数がうまく参照できないのです。
<?php
//test2.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;/?:@&=+$,%#]+)';
$replacements = '<a href="\\1">\\1</a>';
$msg = ereg_replace($patterns, "", $msg);
// end set generate URL link
// start set message
echo $msg . $replacements;
// end set message
?>
質問
1 test1.phpが動いてtest2.phpが動かない理由はなんでしょうか?
2 test2.phpの目的を達するためにはどう書けばよいでしょうか?
お礼
ありがとうございます。 置換用のパターンなのですね。 よくわかりました。