待辦事項 #9507

bogoYAML: 文字列のエスケープシーケンス解釈の不具合に対処するパッチ
啟用日期: 2006-12-02 05:49 最後更新: 2006-12-02 05:49

回報者:
(匿名)
負責人:
(無)
類型:
狀態:
開啟
元件:
(無)
里程碑:
(無)
優先權:
5 - 中
嚴重程度:
5 - 中
處理結果:
檔案:
1

細節

1. 概要
文字列のエスケープシーケンスの解釈が適切に行われず、
データの読み出し時に文字列を破壊する不具合が存在しま
す。

2. 原因
str_replaceの挙動が原因で、これは複数の対象を一回の探
査で処理せず、別々に順番に処理します。
PHP Manualより
> search あるいは replace が配列の場合は、配列の最初の
要素から順に処理されます。
> cite: http://jp.php.net/manual/ja/function.str-
replace.php
したがって、"\\n"と言うシーケンスがあった場合、現在の
コードでは先に\nが置換されてしまいます。
また、これは置換の順序を変更することでは解消できませ
ん。先に\\を置換するようにした場合、
\\の置換処理で"\n"となった後、\nの置換処理で単なる改行
へと変化してしまいます。

3. 対策
preg_replace_callback等を用いて、全てのシーケンス展開
を一周の置換処理で完了するように修正します。

4. 再現データ
---
- "\\n"
[EOF]

5. パッチ
添付

Ticket History (1/1 Histories)

2006-12-02 05:49 Updated by: None
  • File 1647: EscapeSequence.patch is attached

Attachment File List

編輯

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » 登入