質問するログイン新規登録

回答編集履歴

1

入力文字数チェックがあるのを失念していました。。。

2018/06/28 02:50

投稿

SE-studying-now
SE-studying-now

スコア351

answer CHANGED
@@ -11,12 +11,12 @@
11
11
 
12
12
  それはさておき、質問は「ユーザが入力した「文、変更する文字列、変更後の文字列」をXSS対策としてhtmlspecialchars()でエスケープして表示したい、変更後の文字列は色付けしたいのでspanタグで囲みたい、そうすると色付け用のspanタグの<>や'までエスケープされてspanタグがそのまま表示されてる。。どうしよう?」という意図と思いましたがどうでしょうか?
13
13
 
14
- であれば、htmlspecialchars()のエスケープ処理を最初に持ってくればよいと思います。
14
+ ~~であれば、htmlspecialchars()のエスケープ処理を最初に持ってくればよいと思います。~~
15
+ **文字数が問題なければエスケープ処理をして、その後に色付けspanタグの追加処理を行いましょう。**
15
16
  ```ここに言語を入力
16
17
  $write = htmlspecialchars($_POST["change"], ENT_QUOTES, "UTF-8");
17
18
  $write_before = htmlspecialchars($_POST["change_before"], ENT_QUOTES, "UTF-8");
18
19
  $write_after = htmlspecialchars($_POST["change_after"], ENT_QUOTES, "UTF-8");
19
20
  //以降置換処理~
20
21
  ```
21
-
22
22
  エスケープ後の文字列でもstr_replace()での置換は正常に動作すると思います。問題あればまた質問下さい。