助かります!
HTMLの特殊文字を勝手に復元されると、
まずいコードが動いてしまうかもしれないので、修正を期待しています
HTML の特殊文字の入力がうまくできずにいます
2016年2月11日 at 22:35
お世話になります
掲題の件について質問したのですが、投稿時HTMLがエスケープされてしまったので、
画像にして質問させていただきました
よろしくお願いいたします
---- 質問 ---
HTML の特殊文字の入力について
お世話になっております
concrete5.7.5.6 / XSERVER 環境です
症状1:記事ブロックタイプで
1.aaa という文字列を入力する
2.保存する
3.正常に aaa と表示されます。
4.編集画面にする
5.aaa が タグが有効になった状態で表示されます。
5.HTML 入力モードに切り替えてると aaa が、エスケープされる表示されています。
6.この状態で保存すると、 タグが有効になった表示状態になります。
症状2:HTML ブロックタイプで
1.<h1>aaa</h1> という文字列を入力する
2.保存する => 正常に aaa と表示されます
3.編集します。
4.編集画面に、aaa と表示されます。
5.保存すると、 タグが有効になった表示状態になります。
わざわざエスケープした文字が、無効化されてしまうので < > が入力できない状況です。
こちら、なんらか、回避する方法ないでしょうか?
添付:
question.png
タグ:
Re: HTML の特殊文字の入力がうまくできずにいます
2016年2月12日 at 14:32
記事ブロックの修正箇所です。
concrete/src/Editor/RedactorEditor.php 77行目
$html = sprintf('<textarea data-redactor-editor="%s" name="%s">%s</textarea>', $identifier, $key, $content);
↓
$html = sprintf('<textarea data-redactor-editor="%s" name="%s">%s</textarea>', $identifier, $key,htmlspecialchars($content,ENT_QUOTES,APP_CHARSET));
concrete/src/Editor/RedactorEditor.php 77行目
$html = sprintf('<textarea data-redactor-editor="%s" name="%s">%s</textarea>', $identifier, $key, $content);
↓
$html = sprintf('<textarea data-redactor-editor="%s" name="%s">%s</textarea>', $identifier, $key,htmlspecialchars($content,ENT_QUOTES,APP_CHARSET));
Your post has been saved and will be published after approval by the forum moderator.
acliss
Re: HTML の特殊文字の入力がうまくできずにいます
htmlブロックはh()を使っているのですが、h関数はdouble_encode引数がtrueに設定されているのでこのような挙動になっているようです。
下記のとおり変更で、うまく動きました。
concrete/blocks/html/form_setup_html.php 3行目を下記に修正
<div id="ccm-block-html-value"><?php echo h($content)?></div>
↓
<div id="ccm-block-html-value"><?php echo htmlspecialchars($content,ENT_QUOTES,APP_CHARSET)?></div>
記事ブロックも同様だと思うのですが、調査中です。
本家にプルリクエスト送ります。