如果在INI的键值里出现双引号的话,应该怎样写呢?我试过用转义字符\,但是在PHP 5.3下可以读出正确的",在5.2下读不出。是否有什么解决方法或者设置呢?

解决方案 »

  1.   

    php 5.3.1
    test.ini如下"localhost"
    123
    456"dd"ddf
    $filename = dirname(__FILE__)."/test.ini";
    if (!file_exists($filename)){
    die("XXX");
    }Else{
    $fp = fopen($filename,"r");
    if (!$fp){
    die("SSSS");
    }Else{
    echo trim(fgets($fp));echo "<br>";
    echo trim(fgets($fp));echo "<br>";
    echo trim(fgets($fp));echo "<br>";
    }
    fclose($fp);
    }没有引号的问题
      

  2.   

    举个例子吧,如何配置 <?xml version="1.0" encoding="gb2312"?>我在5.3的时候写
    response_xml_header="<?xml version=\"1.0\" encoding=\"gb2312\"?>"是可以的但是5.2就不行,读出来会变成<?xml version=\1.0\ encoding=\gb2312\?>不知道为何是不是有什么固定格式呢?
      

  3.   

    文档Note: There are reserved words which must not be used as keys for ini files. These include: null, yes, no, true, false, on, off, none. Values null, no and false results in "", yes and true results in "1". Characters {}|&~![()^" must not be used anywhere in the key and have a special meaning in the value. 也就是说"本身就不受支持的
      

  4.   

    请看清楚了,must not be used as “keys”我说的是键值“value”
      

  5.   

    不好意思,看快了,知道了。那有没有解决方法呢?楼上有位朋友貌似不用parse_ini_file就可以了?
      

  6.   

    XML CDATA
     
      

  7.   

    现在主要不是HTTP传输的问题,是从INI读出来后就有问题了。加CDATA有用的吗?
      

  8.   

    我觉得楼主应该操作xml,而不是操作.ini,你说呢。两者格式还是相差比较多的。
      

  9.   

    其实都是可以的,只不过INI的配置内容刚好是XML而已嘛。
      

  10.   

    而且你想php.ini也没用xml来配置,说明不是非得用xml不可的。只是谁知道php对ini的支持这么多限制...
      

  11.   

    php也没想像你那样有特殊要求,要么你就用php5.3,要么自己写一个解析函数,或者你可以把"这样的特殊字符用另一组定义好的(对ini来说不是)特殊字符的(对你自己来说是)特殊字符来代替,你可以读取之后再程序里面再替换
      

  12.   

    另外如果lz有兴趣,可以去php问问他们是否真的是在5.3里面加入了可以用转义的方式来在ini中输入"这样的特殊字符,否则的话这也可能是一个bug,后续的版本被修复也不一定
      

  13.   

    谢谢你的建议。其实我也想用5.3,不过提供商的是5.2,我也没办法。目前只好改成用XML来配置了,用CDATA来解决这个问题。