用PHP解析文本文件

用PHP解析文本文件,php,parsing,file-io,Php,Parsing,File Io,可能重复: 我需要从文本文件中提取一些文本。假设http://site.com/a.txt 该文件的内容如下所示: var $name= 'name1'; var $age= 'age2'; var $phone= 'phonenumber'; var $a= 'asd'; var $district= 'district23'; O:6:"Person":5:{ s:4:"Name";s:8:"John Doe"; s:3:"Age";i:52; s:5:"Phon

可能重复:

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

该文件的内容如下所示:

var $name= 'name1';
var $age= 'age2';
var $phone= 'phonenumber';
var $a= 'asd';
var $district= 'district23';
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";
}
$serializedPerson = serialize($person);
echo $serializedPerson;
如何在单独的回显中获取此文本文件的值(名称1、年龄2、电话号码、asd、地区)。

使用函数将文件读入数组。然后循环遍历数组,文件中的每一行都将是数组中的另一个元素。因此,请确保您的文件在数据之间有换行符


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

我建议使用类来封装数据

想象一下,有一个名为“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和函数将对象存储在任何您喜欢的地方。表示对象的存储字符串如下所示:

var $name= 'name1';
var $age= 'age2';
var $phone= 'phonenumber';
var $a= 'asd';
var $district= 'district23';
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";
}
$serializedPerson = serialize($person);
echo $serializedPerson;
下面是如何将
$person
序列化为如下所示:

var $name= 'name1';
var $age= 'age2';
var $phone= 'phonenumber';
var $a= 'asd';
var $district= 'district23';
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";
}
$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对象非常容易,您可以使用它,而无需手动解析字符串。如果需要,您可以将字符串存储在文本文件中,也可以存储在数据存储中。

我将为您将其分解为多个步骤,而不是提供解决方案代码

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

1) 逐行读取文件

2) 根据您使用的分隔符将各行分开,例如“,”

3) 将值读入变量

4) 呼出


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

按如下方式组织文本文件的内容:姓名1、年龄2、电话号码、asd、地区

这样做:

// Get the content of your file
$content = file_get_contents('a.text');
// Set your values with this
list($name, $age, $phone, $a, $district) = explode(',', $content);

// Then feel free to echo wathever you want
echo 'Name ' . $name;

使用数组并对其编码:

是否需要文本文件?您可以将这个变量放入php文件,然后将这个文件包含到另一个文件中,然后您可以回显变量。您尝试了什么吗?我们不只是给出答案。我们帮助你学习。请你回答这三个问题来帮助我帮助你-文件的内容必须是这样吗?该文件是否与您的页面位于同一域中?你能把这个文件变成一个PHP文件吗?@GBD比我先问问题+祝你好运!请告诉我们有关此文本文件的更多信息。是你做的吗?一定是文本文件吗?我试过了,但它出错了。注意:未定义变量:第8行C:\xampp\htdocs\php\test.php中的内容注意:第8行C:\xampp\htdocs\php\test.php中未定义的偏移量:1替换explode(',',$content);通过爆炸(“,”,$q);