[PHP-users 26270] Re: parse_ini_file関数について

Tadashi Jokagi ml @ elf.no-ip.org
2005年 7月 22日 (金) 14:01:23 JST


      ぢょ〜@よくきたなです.
      最終的に? たどり着く zend_ini_scanner.l では文字列は下記のように
    定義されているようです.

<INITIAL>["][^\n\r"]*["] {                                                                                                                            
    /* ENCAPSULATED TC_STRING */ 

<INITIAL>[^=\n\r\t;|&~()!"]+ {                                                                                                                        
    /* STRING */

    「"」で始まるときは前者になると思うんですが,間に「"」をエスケープ
    する手段がないので今のところダメっぽいですね.自分でビルドしてませ
    んが,

<INITIAL>["][^\n\r"]*["] {                                                                                                                            
    /* ENCAPSULATED TC_STRING */ 
(snip)
    ini_lval->type = IS_STRING;                                                                                                                       
    return TC_ENCAPSULATED_STRING;                                                                                                                    
}

    を

<INITIAL>['][^\n\r']*['] {                                                                                                                            
    /* ENCAPSULATED TC_STRING */ 
(snip)
    ini_lval->type = IS_STRING;                                                                                                                       
    return TC_ENCAPSULATED_STRING;                                                                                                                    
}

    みたいにしたら

foo = 'foo foo " foo foo'

    とかは出来るかもしれません.ただしこれも「'」で始まると次の「'」ま
    でということなので,

foo = 'foo foo ' foo foo'

    はできませんが.

-- 
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Shibuya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukita blog http://blog.poyo.jp/
Yokukita wiki http://wiki.poyo.jp/


PHP-users メーリングリストの案内