如何爆炸和爆炸弦

时间:2016-08-10 10:39:18

标签: php

我有一串这样的文字:

Intro Title ### Some description ### a link \\\ 
Intro Title Two ### Description Two ### link 2 \\\
And so ... can be infinite

我使用explode来访问字符串的不同部分。

$test  =  explode('###', $string);

echo $test[0]; // outputs: Intro Title
echo $test[1]; // outputs:  Some description

直到这里工作正常。但我需要能够以相同的方式访问第二部分

echo $test[0]; // to output: Intro Title Two

我尝试过foreach,但似乎有效

foreach ($string as $key) {
    $second = explode('\\\', $key);
}

我无法弄明白该怎么做。

3 个答案:

答案 0 :(得分:0)

$string ="Intro Title ### Some description ### a link \\\ 
Intro Title Two ### Description Two ### link 2 \\\
And so ... can be infinite";

$firstExplode  =  explode('###', $string);

foreach ($firstExplode as $key) {
    $secondExplode = explode("\\\\", $key);
    var_dump($secondExplode);
}

请注意,由于逃避问题,我使用了四个反斜杠而不仅仅是3个反斜杠。

答案 1 :(得分:0)

回答你的问题

你可以先在新行上爆炸,然后在你的分隔符上的foreach循环中爆炸。那么你甚至不需要在每一行的末尾加上反斜杠。

<?php
$i = 0;
$lines = explode("\n", $string);
foreach($lines as $line) {
  $data[$i] = explode('###', $line);
  $i++;
}

改进您的代码:

除非您真的依赖于此自定义文件格式,否则我建议您使用xmlymljson等标准格式。

最简单的方法可能是json

<?php
$string <<<EOT
  [
    { "title": "Intro Title", "Description": "Some description", "link": "a link" },
    { "title": "Intro Title 2", "Description": "Some other description", "link": "a second link" }
  ]
EOT;

$data = json_decode($string, true);
print_r($data);

答案 2 :(得分:0)

如果是一个字符串:

$string ="Intro Title ### Some description ### a link \\\ 
    Intro Title Two ### Description Two ### link 2 \\\
    And so ... can be infinite";
$string_parts = explode("\\\",$string);
foreach($string_parts as $key=>$val){
    $temp = explode('###', $val);
    echo $temp[0]; // outputs: Intro Title
    echo $temp[1]; // outputs:  Some description
}