&#39 ==> &#39

解决方案 »

  1.   

    我看过里面的函数已经把&替换成 &了,但就是当输入' 的时候,&就不会变成&了,查不到是在哪里替换的,用来很多的preg_replace函数,但全部注释掉也没有用..
      

  2.   

    function txt_htmlspecialchars($t="")
    {
    // Use forward look up to only convert & not {
    $t = preg_replace("/&(?!#[0-9]+;)/s", '&', $t );
    $t = str_replace( "<", "&lt;"  , $t );
    $t = str_replace( ">", "&gt;"  , $t );
    $t = str_replace( '"', "&quot;", $t );

    return $t; // A nice cup of?
    }
    请问这里的正则是什么意思??
    $t = preg_replace("/&(?!#[0-9]+;)/s", '&amp;', $t );
      

  3.   

    function clean_value($val)
        {
         global $ibforums;
        
         if ($val == "")
         {
         return "";
         }
        
         $val = str_replace( "&#032;", " ", $val );
        
         if ( $ibforums->vars['strip_space_chr'] )
         {
         $val = str_replace( chr(0xCA), "", $val );  //Remove sneaky spaces
         }
        
         $val = str_replace( "&"            , "&amp;"         , $val );
         $val = str_replace( "<!--"         , "&#60;&#33;--"  , $val );
         $val = str_replace( "-->"          , "--&#62;"       , $val );
         $val = preg_replace( "/<script/i"  , "&#60;script"   , $val );
         $val = str_replace( ">"            , "&gt;"          , $val );
         $val = str_replace( "<"            , "&lt;"          , $val );
         $val = str_replace( "\""           , "&quot;"        , $val );
         $val = preg_replace( "/\n/"        , "<br>"          , $val ); // Convert literal newlines
         $val = preg_replace( "/\\\$/"      , "&#036;"        , $val );
         $val = preg_replace( "/\r/"        , ""              , $val ); // Remove literal carriage returns
         $val = str_replace( "!"            , "&#33;"         , $val );
         $val = str_replace( "'"            , "&#39;"         , $val ); // IMPORTANT: It helps to increase sql query safety.
        
         // Ensure unicode chars are OK
        
         if ( $this->allow_unicode )
    {
    $val = preg_replace("/&amp;#([0-9]+);/s", "&#\\1;", $val );
    }

    // Strip slashes if not already done so.

         if ( $this->get_magic_quotes )
         {
         $val = stripslashes($val);
         }
        
         // Swop user inputted backslashes
        
         $val = preg_replace( "/\\\(?!&amp;#|\?#)/", "&#092;", $val ); 
        
         return $val;
        }