PHP正则表达式-将纯文本除以字符串对象

我有一个具有以下内容的file.txt:

{"name":"merli"}{"name":"berta"}{"name":"ivan"}
{"name":"joan"}
{"name":"mireia"}{"name":"pol"}
{"name":"gerard"}

我正在使用此代码,但我不知道如何用“} {”分隔而不会丢失括号

$exploded = preg_split('/\r\n|\r|\n|}{/','file.txt');

我得到的结果是:

Array (
    0: {"name":"merli"
    1: "name":"berta"
    2: "name":"ivan"}
    3: {"name":"joan"}
    4: {"name":"mireia"
    5: "name":"pol"}
    6: {"name":"gerard"}
)

我需要这个:

Array (
    0: {"name":"merli"}
    1: {"name":"berta"}
    2: {"name":"ivan"}
    3: {"name":"joan"}
    4: {"name":"mireia"}
    5: {"name":"pol"}
    6: {"name":"gerard"}
)
zhanglijulia 回答:PHP正则表达式-将纯文本除以字符串对象

您可以简单地循环使用字符串字符,而根本不涉及\r\n字符。找到{,找到},并在$temp中将所有字符插入其中,如下所示。

代码段:

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

演示: https://3v4l.org/1OFen

,

我想

[FindsBy(How = How.XPath,Using = "//*[@id=\"ContentPlaceHolder1_btnClear\"]")]
    public IWebElement btnClear { get; set; } 

足够了。

而且文件内容看起来像无效的json ,因此将其修复会更好。

,

您可以使用preg_match_all

$fileContents = '
{"name":"merli"}{"name":"berta"}{"name":"ivan"}
{"name":"joan"}
{"name":"mireia"}{"name":"pol"}
{"name":"gerard"}
';

// $matches is the array containing each matche found
preg_match_all('/{[^{]+}+?/',$fileContents,$matches);

// to rearrange $matches as plaintext
echo $result = join("\n",$matches[0]);

输出:

{"name":"merli"}
{"name":"berta"}
{"name":"ivan"}
{"name":"joan"}
{"name":"mireia"}
{"name":"pol"}
{"name":"gerard"}

您可以here试试。

这还将捕获{"name":"..."} {"name":"..."}{"name":"..."}everyOtherUnexpectedChar{"name":"..."}之类的文本。

,

您无法执行此操作,因为拆分时会删除定界符。您必须创建更复杂的preg_split,或者必须将replace和split结合在一起。试试这个:

$content = preg_replace('/\r\n|\r|\n/','',$content);
$content = preg_replace('/}{/','},{',$content);
$exploded = preg_split('/,/',$content);
本文链接:https://www.f2er.com/2898595.html

大家都在问