我有一串这样的文字:
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);
}
我无法弄明白该怎么做。
答案 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++;
}
除非您真的依赖于此自定义文件格式,否则我建议您使用xml
,yml
或json
等标准格式。
最简单的方法可能是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
}