Ticket #9507

bogoYAML: 文字列のエスケープシーケンス解釈の不具合に対処するパッチ
Eröffnet am: 2006-12-02 05:49 Letztes Update: 2006-12-02 05:49

Auswertung:
(Anonym)
Verantwortlicher:
(Keine)
Typ:
Status:
Offen
Komponente:
(Keine)
Meilenstein:
(Keine)
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Keine
Datei:
1

Details

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-Verlauf (1/1 Historien)

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

Dateianhangliste

Bearbeiten

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