用PHP解析文本文件

时间:2012-09-20 12:42:43

标签: php parsing file-io

  

可能重复:
  Help me parse this file with PHP

我需要从文本文件中提取一些文本。假设http://site.com/a.txt

中有一个文本文件

该文件的内容如下:

var $name= 'name1';
var $age= 'age2';
var $phone= 'phonenumber';
var $a= 'asd';
var $district= 'district23';

如何在单独的echo中获取此文本文件(name1,age2,phonenumber,asd,district)的值。

3 个答案:

答案 0 :(得分:2)

使用file功能将文件读入数组。然后循环遍历数组,文件中的每一行都将是数组中的另一个元素。因此,请确保您的文件在数据之间存在线性错误。

当然最好的方法是在.php文件中准备好PHP代码,然后将其包含在include函数中。

答案 1 :(得分:1)

我建议使用类来封装您的数据......

所以想象一下名为“person.php”的文件看起来像这样......

class Person
{
    public $Name;
    public $Age;
    public $Phone;
    public $A;
    public $District;
}

然后,您可以将person类用作容器。

include_once('person.php');

$person = new Person();
$person->Name = 'John Doe';
$person->Age = 52;
$person->Phone= '+441234 567 890';
$person->A = 'asd';
$person->District = 'District23';

请注意“年龄”是不稳定的(即如果对象存活时间过长,年龄会出错!)您可以通过存储出生日期然后在Person对象上使用getAge()函数来避免这种情况。你在任何时间点都是正确的年龄。

Person类是一个普通的PHP对象,但您可以添加添加与Person概念相关的行为的函数,因此getAge()函数将存在于Person类中。

最后,您可以使用PHP的serializeunserialize函数将对象存储在任何位置。存储的表示对象的字符串如下所示:

O:6:"Person":5:{
    s:4:"Name";s:8:"John Doe";
    s:3:"Age";i:52;
    s:5:"Phone";s:15:"+441234 567 890";
    s:1:"A";s:3:"asd";
    s:8:"District";s:10:"District23";
}

以下是您将$person序列化为如下所示的方式:

$serializedPerson = serialize($person);
echo $serializedPerson;

从字符串转换回Person也很容易:

$serializedPerson = 'O:6:"Person":5:{s:4:"Name";s:8:"John Doe";s:3:"Age";i:52;s:5:"Phone";s:15:"+441234 567 890";s:1:"A";s:3:"asd";s:8:"District";s:10:"District23";}';

$newPerson = unserialize($serializedPerson);

echo $newPerson->Name;

<强>摘要

因此,如果您以此序列化格式存储数据,则可以直接将其转换为可以在不手动解析字符串的情况下使用的PHP对象。如果需要,您可以将字符串存储在文本文件中 - 或者数据存储。

答案 2 :(得分:0)

而不是给你解决方案代码,我将把它分解为适合你的步骤。

0)以机器可读格式写入文件,例如姓名,年龄,电话号码

1)逐行从文件中读取

2)根据你使用的分隔符打破每一行,例如“”

3)将值读入变量

4)回声

如果您遇到更具体的问题,请告诉我们。