Php 将大绳切割成物体

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;;

我有一个来自服务器的巨大字符串,我希望每一行都作为一个对象(用于后面的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;;
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中显示的我们的问题。那么你如何确定你要把它分成几行呢?;;关闭;;;关闭;;或;;打开;;;打开;;谢谢,但这条线不是成一行的,它是一条大线。谢谢,但这条线不是成一行的,它是一条大线。