猫型iPS細胞研究所

Windows、Linux、iOS、DB、Network

PHP

SyntaxHighlighter Evolvedで文字化けする

投稿日:2013年6月8日 更新日:

プレビューを見ても大丈夫なのに、
いざ投稿すると毎回文字化けしていました。
正確には予約投稿すると文字化けしていました。

<h3>"test"</h3>

&lt;h3&gt;&quot;test&quot;&lt;/h3&gt;

です。

そこでソースを修正します。

/ips.nekotype.com/wp-content/plugins/syntaxhighlighter/syntaxhighlighter.php

	// The callback function for SyntaxHighlighter::encode_shortcode_contents()
	function encode_shortcode_contents_callback( $atts, $code = '', $tag = false ) {
		$this->encoded = true;
		//$code = str_replace( array_keys($this->specialchars), array_values($this->specialchars), htmlspecialchars( $code ) );
		$code = str_replace( array_keys($this->specialchars), array_values($this->specialchars),  $code );
		return '[' . $tag . $this->atts2string( $atts ) . "]{$code}[/$tag]";
	}

これで大丈夫かな?

htmlspecialchars — 特殊文字を HTML エンティティに変換する

【追記】
編集画面に戻るとソースが変わってしまいました。
そこで

	// The callback function for SyntaxHighlighter::decode_shortcode_contents()
	// Shortcode attribute values need to not be quoted with TinyMCE disabled for some reason (weird bug)
	function decode_shortcode_contents_callback( $atts, $code = '', $tag = false ) {
		$quotes = ( user_can_richedit() ) ? true : false;
		//$code = str_replace(  array_values($this->specialchars), array_keys($this->specialchars), htmlspecialchars_decode( $code ) );
		$code = str_replace(  array_values($this->specialchars), array_keys($this->specialchars),  $code );
		return '[' . $tag . $this->atts2string( $atts, $quotes ) . "]{$code}[/$tag]";
	}

これでおそらく大丈夫でしょう・・・。
自信ありませんのでしばらく様子をみます。

ちなみに特殊記号をそのまま表示させたい場合は
最初の&を&amp;にして表示させることになります。

つまり&gt;と表示させたい場合は、
&amp;gt;
と記述します。

Gooleアドセンス用336

Gooleアドセンス用336

-PHP
-

執筆者:

関連記事

javascriptで複数行のチェックボックスの値を取得する

あまりしないので結構こまってしまいましたのでメモ・・・。 <script type="text/javascript"> function clickfunc(){ v …

cakephpでFile does not exist: /var/www/html/cakephp

別の環境にcakeのディレクトリを持って行ったらApacheのエラーログに File does not exist: /var/www/html/cakephp というメッセージが・・・ mod_re …

CakePHP loadModelでmodleは複数設定できない?

loadModelでmodleは複数設定できないようです・・・ ではどうするか。 loadModelを複数記述するようです・・・ //$this -> loadModel(‘User’,’Acl …