在 [ code ] 中使用雙引號會被自動加入反斜線 \

edited 十一月 2013 in Vanilla Forums
我把問題回報到這兒了:
https://github.com/vanillaforums/Garden/issues/1729

使用 [ code ] 與 [ / code ] 去引用程式碼可以保留文字空白,但是程式的實做有問題,造成程式碼會被自動加入多餘的反斜線

評論

  • edited 十一月 2013
    請問可以在原程式碼找到呼叫 eval() 的地方嗎 ?
    例如: $mytext=eval($oldtext);
    那麼補個 function


    function myeval($string)
    {
    $result='[code]'.str_replace('\\"','\"',$string).'
    ';
    return $result;
    }
    [/code]

    再把 $mytext=eval($oldtext); 改成
    $mytext=myeval(eval($oldtext));

    另外一個方法:
    補個 function


    function myeval($string)
    {
    $result='[code]'.$string.'
    ';
    return $result;
    }
    [/code]

    再把 $mytext=eval($oldtext); 改成
    $mytext=myeval($oldtext);

    以上只是想法,未測試;參考看看.

  • 更正,程式碼被吃掉了....

    請問可以在原程式碼找到呼叫 eval() 的地方嗎 ?
    例如: $mytext=eval($oldtext);
    那麼補個 function

    function myeval($string)
    {
    $result='[code]'.str_replace('\\"','\"',$string).'
    ';
    return $result;
    }
    再把 $mytext=eval($oldtext); 改成
    $mytext=myeval(eval($oldtext));

    另外一個方法:
    補個 function
    function myeval($string)
    {
    $result='
    '.$string.'
    ';
    return $result;
    }

    再把 $mytext=eval($oldtext); 改成
    $mytext=myeval($oldtext);

    以上只是想法,未測試;參考看看.
    [/code]
  • 嗯,又被吃掉了.....
  • 恩,又發現一個 bug , [ code ] 標籤用兩次就會出問題...
  • 這裡提到的問題其實是 preg_* 函式可以使用一個 'e' 當作 modifier ,然後傳入的字串會透過 eval() 解析
    php.net/manual/en/reference.pcre.pattern.modifiers.php

    依據手冊說明,這個方式會自動執行 addslashes() 函式,因此會出現惱人的反斜線
  • 其實可以修的方式很多啦,只是都在等官方修完再跟著更新 XD
  • XDD 我以為這是自己寫的
Sign In or Register to comment.