管理画面に組み込むことができる 'A JACK IN THE BOX' の坂上ひさとさん作の「トラックバックプラグイン」( tb_tool.php )を php7 で動作できるよう修正した。
if($_POST[mode] == "pre_tb"){\n
$tb_line = str_replace("\r\n","\n",$_POST[tburl]);\n
$tb_line = str_replace("\r","\n",$_POST[tburl]);\n
$tb_line = str_replace("\n","<>",$_POST[tburl]);\n
上のようなコードが書かれているところが3箇所あるので、全て、
if ((isset($_POST['mode']) ? $_POST['mode'] : '') == "pre_tb"){\n
$tb_line = str_replace("\r\n","\n", $_POST['tburl']);\n
$tb_line = str_replace("\r","\n", $tb_line);\n
$tb_line = str_replace("\n","<>", $tb_line);\n
のように修正した。コードが意図する動作は、 "\r\n" を "\n" に置換、さらに "\r" を "\n" に置換、最後に置換されて残った "\n" を "<>" に置換というもののはずだが、元のコードでは3回呼ばれる str_replace() で、毎回 $_POST['tburl'] から値を取得しているため、そのような動作にならない。
併せて、 $_POST[tburl] のように書かれているところを全て $_POST['tburl'] のようにシングルクオートで囲むようにした。こうしないと警告が出るためだ。
次に、 tb_tool.php から読み込まれ使用されている jcode.php も修正が必要だった。古い php コードなので、 php7 では削除された ereg 系の正規表現関数が使用されているところが3箇所ほどあるので、全て preg_match(), preg_replace() に置き換えた。
以上で問題なく動作するようになった。
この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/dev/20190902_215709991118.htm
キーワード: rNote tb_tool.php トラックバックプラグイン jcode.php php7