Php 将大绳切割成物体
我有一个来自服务器的巨大字符串,我希望每一行都作为一个对象(用于后面的foreach循环) 这是字符串的一部分:Php 将大绳切割成物体,php,regex,Php,Regex,我有一个来自服务器的巨大字符串,我希望每一行都作为一个对象(用于后面的foreach循环) 这是字符串的一部分: 1535;;34290;;teaserbanner_881.jpg;;Not allowed;;closed;;;;closed;; 1535;;34291;;teaserbanner_8832.jpg;;Not allowed;;closed;;;;closed;; 1379;;31912;;teaserbanner_844.jpg;;Allowed;;open;;;;open;;
1535;;34290;;teaserbanner_881.jpg;;Not allowed;;closed;;;;closed;;
1535;;34291;;teaserbanner_8832.jpg;;Not allowed;;closed;;;;closed;;
1379;;31912;;teaserbanner_844.jpg;;Allowed;;open;;;;open;;
1379;;31913;;teaserbanner_8422.jpg;;allowed;;closed;;;;closed;;
每行中唯一保持不变的是“结束标记”只有两种选择:
element[0] 1535;;34290;;teaserbanner_881.jpg;;Not allowed;;closed;;;;closed;;
element[1] 1535;;34291;;teaserbanner_8832.jpg;;Not allowed;;closed;;;;closed;;
element[2] 1379;;31912;;teaserbanner_844.jpg;;Allowed;;open;;;;open;;
element[3] 1379;;31913;;teaserbanner_8422.jpg;;allowed;;closed;;;;closed;;
字符串不是“行”的,而是一条大的行 请看一看<代码>拆分(“\n”,$string)将为您提供一个数组,其中每个条目都是字符串的一行。请查看split(“\n”,$string)
将为您提供一个数组,其中每个条目都是字符串的一行。您可以使用:-
$lines = file('path/to/file');
foreach($lines as $line){
//do something with $line
}
$lines是一个数组,每个元素表示文件中的一行,以便
var_dump($lines);
会给出类似于:-
array (size=4)
0 => string '1535;;34290;;teaserbanner_881.jpg;;Not allowed;;closed;;;;closed;;' (length=68)
1 => string '1535;;34291;;teaserbanner_8832.jpg;;Not allowed;;closed;;;;closed;; ' (length=69)
2 => string '1379;;31912;;teaserbanner_844.jpg;;Allowed;;open;;;;open;; ' (length=60)
3 => string '1379;;31913;;teaserbanner_8422.jpg;;allowed;;closed;;;;closed;;' length=63)
您可以为此使用:-
$lines = file('path/to/file');
foreach($lines as $line){
//do something with $line
}
$lines是一个数组,每个元素表示文件中的一行,以便
var_dump($lines);
会给出类似于:-
array (size=4)
0 => string '1535;;34290;;teaserbanner_881.jpg;;Not allowed;;closed;;;;closed;;' (length=68)
1 => string '1535;;34291;;teaserbanner_8832.jpg;;Not allowed;;closed;;;;closed;; ' (length=69)
2 => string '1379;;31912;;teaserbanner_844.jpg;;Allowed;;open;;;;open;; ' (length=60)
3 => string '1379;;31913;;teaserbanner_8422.jpg;;allowed;;closed;;;;closed;;' length=63)
您可以利用:
您可以利用:
巨大是什么意思?
exploding()
您需要对其进行老式解析,逐字符解析并将其添加到一个存储桶中。当满足您的条件时(如第五代码>;<代码>或第十代码>;<代码>或其他……),将桶视为一个适当的对象并处理它。但不要储存它。将其推送到文件、数据库或其他地方
如果没有那么大,请使用带有“对象”格式的正则表达式。比如:
// keep duplicating the (.*?);; until you reach your number of columns.
preg_match_all '~(.*?);;(.*?);;(.*?);;(.*?);;(.*?);;~s' // pseudo-code :)
这将把它分解为对象和属性。你可以反复使用它。巨大是什么意思?
exploding()
您需要对其进行老式解析,逐字符解析并将其添加到一个存储桶中。当满足您的条件时(如第五代码>;<代码>或第十代码>;<代码>或其他……),将桶视为一个适当的对象并处理它。但不要储存它。将其推送到文件、数据库或其他地方
如果没有那么大,请使用带有“对象”格式的正则表达式。比如:
// keep duplicating the (.*?);; until you reach your number of columns.
preg_match_all '~(.*?);;(.*?);;(.*?);;(.*?);;(.*?);;~s' // pseudo-code :)
这将把它分解为对象和属性。您可以迭代并使用它。尝试使用preg\u split
:
$array = preg_split('/(?<=;;closed;;;;closed;;|;;open;;;;open;;)(?!$)/', $string)
$array=preg_split('/(?尝试使用preg_split
:
$array = preg_split('/(?<=;;closed;;;;closed;;|;;open;;;;open;;)(?!$)/', $string)
$array=preg\u split('/(?你的意思是每一行都作为数组元素吗?来自服务器的每一行之后都有回车符吗?是的,对不起,我是php新手…@user2706762你的意思是Mark是yes还是user2793390是yes?你的意思是每一行都作为数组元素吗?来自服务器的每一行之后都有回车符吗?是的,对不起,我是php新手…@user2706)762你的意思是在Mark是还是在user2793390是?谢谢,但字符串不是成行的,它是一个大的行。啊,好吧,这不是你在问题中显示的。那么你如何确定你将在哪里拆分它?;;关闭;;;关闭;;或;;打开;;;打开;;谢谢,但字符串不是成行的,它是一个大的行。啊,好吧,这不是你在y中显示的我们的问题。那么你如何确定你要把它分成几行呢?;;关闭;;;关闭;;或;;打开;;;打开;;谢谢,但这条线不是成一行的,它是一条大线。谢谢,但这条线不是成一行的,它是一条大线。