2011-11-16 55 views
1

我有一個wordpress的bbcode插件。被bbcode插件替換的字符

但由於某些原因,如果我發佈類似

[i]v497212he2x2MfMi[/i]的「X」字符輸出爲×,這是一些其他種類的X.我該如何解決這個問題?

插件代碼如下:

class BBCode { 

    // Plugin initialization 
    function BBCode() { 
     // This version only supports WP 2.5+ (learn to upgrade please!) 
     if (!function_exists('add_shortcode')) return; 

     // Register the shortcodes 
     add_shortcode('b' , array(&$this, 'shortcode_bold')); 
     add_shortcode('i' , array(&$this, 'shortcode_italics')); 
    } 


    // No-name attribute fixing 
    function attributefix($atts = array()) { 
     if (empty($atts[0])) return $atts; 

     if (0 !== preg_match('#=("|\')(.*?)("|\')#', $atts[0], $match)) 
      $atts[0] = $match[2]; 

     return $atts; 
    } 


    // Bold shortcode 
    function shortcode_bold($atts = array(), $content = NULL) { 
     if (NULL === $content) return ''; 

     return '<strong>' . do_shortcode($content) . '</strong>'; 
    } 


    // Italics shortcode 
    function shortcode_italics($atts = array(), $content = NULL) { 
     if (NULL === $content) return ''; 

     return '<em>' . do_shortcode($content) . '</em>'; 
    } 

} 

// Start this plugin once all other plugins are fully loaded 
add_action('plugins_loaded', create_function('', 'global $BBCode; $BBCode = new BBCode();')); 
+0

你能提供一些它創建的錯誤數據嗎? –

+2

您提供的BBCode類按預期工作。你的問題在其他地方發生。 – dossy

回答

1

這種轉變正在因爲返回給定文本用引號智能引號,頓號,破折號,省略號,商標符號的轉換的WordPress的wptexturize()功能的地方,和乘法符號。

這是從WP 3.2.1 WP-包括/ formatting.php線55:

$dynamic_characters = array('/\'(\d\d(?:&#8217;|\')?s)/', '/\'(\d)/', '/(\s|\A|[([{<]|")\'/', '/(\d)"/', '/(\d)\'/', '/(\S)\'([^\'\s])/', '/(\s|\A|[([{<])"(?!\s)/', '/"(\s|\S|\Z)/', '/\'([\s.]|\Z)/', '/\b(\d+)x(\d+)\b/'); 
$dynamic_replacements = array('&#8217;$1','&#8217;$1', '$1&#8216;', '$1&#8243;', '$1&#8242;', '$1&#8217;$2', '$1' . $opening_quote . '$2', $closing_quote . '$1', '&#8217;$1', '$1&#215;$2'); 

在於​​陣列的最後一個正則表達式是一個旋轉的 「X」 爲×

作爲在wptexturize ... "[t]ext enclosed in the tags <pre>, <code>, <kbd>, <style>, <script>, <tt>, and [code] will be skipped."的功能頁面中說明,您可以通過將該bbcode放入其中一個標記中,或者使用可禁用wptexturize的插件來修復此問題,如InScriptDisablerDisable wptexturize