管理画面に組み込むことができる '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 または e-mail (option):

CAPTCHA Image 左の画像内の式の計算結果を入力:
TWEET
この記事のリンク元

この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/dev/20190902_215709991118.htm