我正在尝试创建一个消息系统,您可以同时向单个或多个用户发送消息。 从我的表单中传递的值如下所示:
<Username One(1)><Username Two(2)><Username Three(3)>
现在,为了让我将消息发布到数据库,我想爆炸并将这些信息修剪成三个单独的部分。所有这些都在一个数组中。
我希望输出是这样的:
Array[0] = 1
Array[1] = 2
Array[2] = 3
我已尝试使用explode(">", $input_value);
,然后使用preg_match
进行修剪。
但是,我最终得到了两个单独的数组。如何将这两者结合起来得到我想要的结果?我需要它尽可能有效,因为每个用户应该能够同时向最大数量的用户发送消息。
我也很欣赏正则表达式易于理解的解释,因为我发现它有点令人困惑。
答案 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]);