正则表达式PHP preg_match_all

use*_*097 0 php arrays preg-match-all

我是一个自我思考的PHP初学者,我还在学习正则表达式.这是我遇到的问题preg_match_all和数组

我的数组有完整的以下信息:

;;CARLOS||ANDREW||STEPH||SUE||JUDY||HAROLD||JAMES||KATIE||JESSICA;;
Run Code Online (Sandbox Code Playgroud)

我要做的是单独显示每个名称,大约有250个不同的名称,数组总是以;; 并始终以;;结尾; 所以这是我的问题,首先我的数组加载正常但只做第一个名称:

    preg_match_all('/^(.+?)\|\|/', $body, $part);
    foreach ($part[1] as $part){
    print_r($part);
Run Code Online (Sandbox Code Playgroud)

结果是 ;;CARLOS

$body巨大的名称列表在哪里(包含250多个名称的数组).

期望的结果:

CARLOS
ANDREW
STEPH
JUDY
HAROLD
JAMES
KATIE
JESSICA
Run Code Online (Sandbox Code Playgroud)

请理解我无法更改输入数组,它就是它.所以基本上在第一个数组我已加载整个列表然后我需要打破它| 字符.

谢谢你的建议.

Jos*_*osh 7

这里不需要使用正则表达式.explodetrim会工作得很好.

$str = trim($body, ";");    // Remove semi-colons
$arr = explode("||", $str); // Return array of strings delimited by double pipes

print_r($arr);
Run Code Online (Sandbox Code Playgroud)

产量

Array
(
    [0] => CARLOS
    [1] => ANDREW
    [2] => STEPH
    [3] => SUE
    [4] => JUDY
    [5] => HAROLD
    [6] => JAMES
    [7] => KATIE
    [8] => JESSICA
)
Run Code Online (Sandbox Code Playgroud)

看到实际行动.

如果你想要你想要的结果,那implode就是上面的输出.

echo implode(" ", $arr);
// Outputs: CARLOS ANDREW STEPH SUE JUDY HAROLD JAMES KATIE JESSICA
Run Code Online (Sandbox Code Playgroud)