I have a file.txt with this content:
{"name":"merli"}{"name":"berta"}{"name":"ivan"}
{"name":"joan"}
{"name":"mireia"}{"name":"pol"}
{"name":"gerard"}
I am using this code, but i don't know how to separate by "}{" without losing the brackets
$exploded = preg_split('/\r\n|\r|\n|}{/', 'file.txt');
The result i am getting is like:
Array (
0: {"name":"merli"
1: "name":"berta"
2: "name":"ivan"}
3: {"name":"joan"}
4: {"name":"mireia"
5: "name":"pol"}
6: {"name":"gerard"}
)
And I need this:
Array (
0: {"name":"merli"}
1: {"name":"berta"}
2: {"name":"ivan"}
3: {"name":"joan"}
4: {"name":"mireia"}
5: {"name":"pol"}
6: {"name":"gerard"}
)
You can simply loop over the string characters and don't involve with \r
and \n
characters at all. Find {
, find }
and have all characters in between them in $temp
as shown below.
Snippet:
<?php
$str = '{"name":"merli"}{"name":"berta"}{"name":"ivan"}
{"name":"joan"}
{"name":"mireia"}{"name":"pol"}
{"name":"gerard"}';
$result = [];
$len = strlen($str);
for($i = 0;$i < $len;++$i){
while($i < $len && $str[$i] != '{') $i++;
$temp = '';
while($i < $len && $str[$i] != '}') $temp .= $str[$i++];
$temp .= '}';
$result[] = $temp;
}
print_r($result);
Demo: https://3v4l.org/1OFen