PHP - 不同值类型的解析文件

时间:2013-03-07 23:40:56

标签: php string parsing floating-point integer

我试图基本上解析一个ini文件而不使用parse_ini_file有几个原因。我将文件完美地解析为多维数组,并且能够正确地搜索所有内容。我遇到的问题是,我希望根据类型解析文件。文件中有字符串,浮点数和整数,我需要将它们存储起来,而不是全部存储为字符串。

用户需要能够获取存储的值,因此基本上他们会使用“预算”键“从标题部分获取浮动”,这将返回4.5。但是,如果他们试图从同一部分获取字符串或整数,则会失败。我有它能够获得密钥,但因为它们都存储为字符串,这是唯一有效的。我想知道如何将值的类型从字符串更改为整数或浮点数。

任何人都有任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

准确预测您正在查看的价值类型将非常困难。字符串可以包含数字,小数点出现在句子中等等......

如果您正在处理为自己使用而生成的自定义ini文件,则可以将值的类型编码到ini设置中。标准设置可能如下所示 -

default_username=Zamereon

因此,您可以将数据类型附加或添加到设置 -

(s)default_username=Zamereon // one character depicting the data type,
(i)default_reputation=1      // you could use strpos.

default_balance=0.5=f // use list($name,$value,$type) = explode('=',$setting)

参考文献 -


另一个建议是 将它们保留为已解析的多维数组中的字符串,并仅在实际需要时将其转换为 。在处理来自ini文件的一些输入数据的函数或代码行中,您将确切地知道您需要什么样的数据类型,如果它是一个浮点数,只需cast它就可以根据需要浮动它。没有必要立即将每个变量转换为正确的形式,因为它们的值不会随着文本表示而改变; 只有真正需要进行转换才能进行进一步的操作。

答案 1 :(得分:0)

您可以使用type casting

  

PHP中的类型转换与C中的类型转换一样:它的名称   所需的类型写在变量之前的括号中   被投了。

<?php
$foo = 10;   // $foo is an integer
$bar = (boolean) $foo;   // $bar is a boolean
?>
  

允许演员阵容:

(int), (integer) - cast to integer
(bool), (boolean) - cast to boolean
(float), (double), (real) - cast to float
(string) - cast to string
(array) - cast to array
(object) - cast to object
(unset) - cast to NULL (PHP 5)