有效地分解和修剪长字符串,从而产生单个数组
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]);
我正在尝试创建一个消息传递系统,您可以在其中同时向单个或多个用户发送消息。 从我的表单中传递的值如下所示:
<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]);