有效地分解和修剪长字符串,从而产生单个数组

Exploding and trimming a long string effectively resulting in a single array

我正在尝试创建一个消息传递系统,您可以在其中同时向单个或多个用户发送消息。 从我的表单中传递的值如下所示:

<Username One(1)><Username Two(2)><Username Three(3)>

现在,为了让我 post 我想分解到数据库的消息和 trim 这些信息分成三个独立的部分。所有这些都在一个数组中。

我希望输出是这样的:

Array[0] = 1
Array[1] = 2
Array[2] = 3

我试过使用 explode(">", $input_value); 然后使用 preg_match 到 trim。 但是,我最终得到了两个单独的数组。我怎样才能将这两者结合起来并得到我想要的结果?我需要它尽可能有效,因为每个用户都应该能够同时向最大数量的用户发送消息。 另外,我希望能对正则表达式进行易于理解的解释,因为我觉得它有点令人困惑。

您可以使用:

$s = '<Username One(1)><Username Two(2)><Username Three(3)>';    
preg_match_all('~\b[\p{L}\p{N}]+(?=\h*\)>)~u', $s, $m);    
print_r($m[0]);

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

(?=\h*\)>) 是与 )>

之前的单词匹配的正面前瞻

因为 1,2,3 是字符串中的数字。这样您就可以从字符串中获取所有数字

<?php
$str="<Username One(1)><Username Two(2)><Username Three(3)>";
preg_match_all('!\d+!', $str, $matches);
print_r($matches[0]);

第二件事所有字符串都在 () brackets

之间
preg_match_all("/\((.*?)\)/", $str, $matches);

print_r($matches[0]);