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

时间:2015-06-10 09:37:28

标签: php arrays regex explode

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

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

现在,为了让我将消息发布到数据库,我想爆炸并将这些信息修剪成三个单独的部分。所有这些都在一个数组中。

我希望输出是这样的:

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

我已尝试使用explode(">", $input_value);,然后使用preg_match进行修剪。 但是,我最终得到了两个单独的数组。如何将这两者结合起来得到我想要的结果?我需要它尽可能有效,因为每个用户应该能够同时向最大数量的用户发送消息。 我也很欣赏正则表达式易于理解的解释,因为我发现它有点令人困惑。

2 个答案:

答案 0 :(得分:1)

您可以使用:

$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 :(得分:1)

因为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]);