我正在我的系统中的INI文件中存储翻译,并以这种方式存储:
$ini=parse_ini_file('translations.ini',false,INI_SCANNER_RAW);

这个INI_SCANNER_RAW设置根据文档告诉PHP:

If INI_SCANNER_RAW is supplied,then option values will not be parsed.

在技​​术上这意味着它不应该使用INI文件中的值进行任何解析,所以我不必在INI文件中引用或转义任何东西.这些都工作:

example1="one"
example2=one
example1='one'
example3="double quotes ("value")"
example4=double quotes ("value")
example3='double quotes ("value")'

他们会输出:

one
one
one
double quotes ("value")
double quotes ("value")
double quotes ("value")

即使这样做:

semi-colon1="ˇ1234567890+´õü'äö-.,<>~:_ÖÄ*PÕÜ`?=)(/&%¤#"!@£$€{[]}\½"

哪些产出可预测:

ˇ1234567890+´õü'äö-.,<>~:_ÖÄ*PÕÜ`?=)(/&%¤#"!@£$€{[]}\½

但这里有一个问题.在我的INI值添加分号(;)的那一刻,即使我试图逃避它,我的解析就会中断.

example1="semi-colon looks like (;) character"
example1="semi-colon looks like (\;) character"
example1="semi-colon looks like (\\;) character"
example1="semi-colon looks like (\\\;) character"

所有的输出是:

"semi-colon looks like (
"semi-colon looks like (
"semi-colon looks like (
"semi-colon looks like (

(如果我使用单引号而不是双引号也是如此)

我最好的猜测是,这是因为分号被认为是一个评论的字符,所以它被删除,它留下这段文本.起始引号仍然存在,因为结尾引号在分号之后,因此它不被封装.

但是这样做是没有意义的,因为#也被认为是INI文件的注释符号.

但是对于我的系统来说这是一个非常严重的问题,我如何在INI文件中的值字符串中使用分号?这是PHP中的错误还是预期的行为?

这也不会引起异常或通知或错误.

谢谢!

这是一个已知的错误:

> parse_ini_file() with INI_SCANNER_RAW cuts a value that includes a semi-colon

是fixed in PHP 5.4.5

还有fixed in PHP 5.3.15

当分号(;)被包含在值中时,用PHP解析INI文件的更多相关文章

  1. 命令行PHP mysql_connect()错误

    一旦PHPexec命令完成,我在命令行运行一个PHP页面来更新mysql数据库.这一直很好用.但是,我刚刚重新安装了我的服务器,现在当我在命令行上运行它时脚本返回以下错误:脚本在浏览器中运行正常,这意味着安装了MysqL.如何在PHP中启用MysqL从命令行运行?

  2. 如何存储php app-xml或ini或db的配置

    我有一个用PHP编写的应用程序,并且有一些可配置的变量.我们正在实现一个功能,用户可以创建一组配置,并轻松地在它们之间切换.我应该如何存储我的配置?在多个.ini文件中?如果我使用数据库,我将不得不使用一个单独的应用程序的主要因为不值得进入的原因,这让我很害羞.我一直在走xml路由,但是我使用SimpleXML添加和编辑配置有问题.此外,该应用程序必须与PHP5.1.6兼容,我对某些功能有点紧张.从来没有真正处理过创建自定义的ini文件…

  3. php – 更新WAMP / Apache以使用新的cacert.pem

    更新的CA证书:http://curl.haxx.se/ca/cacert.pem我知道我已经在另一台机器上完成了这项工作,但是当我不得不执行此操作时,我无法找到之前找到的资源.我想更新WAMP以使用上面的.pem,但我不能为我的生活记住用什么命令做到这一点.如果你至少运行PHP5.3.7,你可以把它放在PHP.ini文件末尾的ini中:您需要找到您选择使用的PHP版本的特定PHP.ini文件.文

  4. Php.ini生产与开发

    我使用xampp来开发我的本地主机.我想删除PHP通知,只保留警告.我知道这是通过PHP.ini文件完成的,但我无法找到它.我沿着PHPinfo()的路径,它导致我到这个文件夹中的xampp/PHP是两个PHP.ini文件,一个用于生产和一个用于开发.我把它们都设置为错误报告级别id,但是我仍然收到通知,这使我不相信这些实际控制错误报告.我正在使用最新版本的xampp.所以我想我的问题是真正的PHP.ini在哪里,这两个其他版本是什么?

  5. PHP:在共享主机上使用browscap.ini. – ini_set()失败

    我试图使用get_browser(),不幸的是我的页面在一个共享的主机上,我没有访问PHP.ini.我已经下载了最新版本的browscap.ini并放在我的文档根目录中.然后我添加了以下内容:if(!)我已经看过以前的问题,他们似乎没有帮助,任何想法?我以前没听说过这个功能,但是在Googlingaround我遇到了phpbrowscap看起来特别容易.

  6. 启用OPCache不在WAMP中工作

    我试图在WAMP3中为Drupal8.0.4启用OPCache但是它不起作用.所以我用google搜索并更改了我的PHP.ini文件中的一些内容,这是我更改的内容:至并且至但是,’!’标记出现在PHP扩展附近.当我尝试获取日志时,它说:但是在PHP.ini文件中它说:我还应该做些什么才能启用OPCache?

  7. PHP ssh2_connect()实现超时

    我正在使用PHPssh2库,只是做:问题是我想设置超时,即在5秒后停止尝试连接.据我所知,ssh2库本身不支持连接超时.如何实现超时包装?

  8. php – 如何检测纯文本文件的MIME类型:CSS,Javascript,ini,sql?

    使用PHP检测文件的MIME类型是微不足道的–只需在Unix机器上使用PEAR的MIME_Type软件包,PHP的fileinfo或调用文件-i即可.这对于二进制文件以及具有某种“魔术字节”的所有其他文件非常有效,通过它们可以轻松地检测到它们.我失败的是检测纯文本文件的正确MIME类型:>CSS>差异>INI(配置)>Javascript>rST>sql所有这些都被标识为“text/plain”,

  9. 操作.ini文件的好PHP类

    我需要能够编辑.ini文件,但是这样就保留了注释和格式.你知道任何对这类东西有优秀和优化功能的优秀课程吗?您可以尝试从此开始,它会读取ini文件,并在写入时保留设置,您必须扩展它以支持添加新条目:

  10. PHP – 如何检测输出缓冲是否打开

    有没有一种简单的方法可以在PHP中检测PHP.ini中的output_buffering是否为ON?如果没有开启,我希望能够显示一条消息.在我的应用程序中,我尝试使用htaccess文件自动打开它,但似乎它在所有服务器环境中都不起作用,并且在某些情况下它会产生令人讨厌的错误.非常感谢你!

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部