Incidencia #9507

bogoYAML: 文字列のエスケープシーケンス解釈の不具合に対処するパッチ
Abrir Fecha: 2006-12-02 05:49 Última actualización: 2006-12-02 05:49

Informador:
(Anónimo)
Propietario:
(Ninguno)
Tipo:
Estado:
Open
Componente:
(Ninguno)
Hito:
(Ninguno)
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Ninguno
Fichero:
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 History (1/1 Histories)

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

Attachment File List

Editar

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