从变量中过滤数据并存储到PHP中的另一个变量中

时间:2018-11-01 09:42:29

标签: php mysql mysqli

这是我的代码

<?php 

    $content = "Hello Guys how are you @[6] i hope you are doing well @[9]";

    $tags = ""; // Value under @[]

    echo $tags;

 ?>

我想将@ []下的值存储到以逗号分隔的$ tags

1 个答案:

答案 0 :(得分:0)

您可以使用preg_match_all [1]来获取所有@[]部分之间的内容。然后implode [2]的结果得到一个逗号分隔的字符串。

<?php

define('FIRST_MATCH_GROUP', 1);

$content = "Hello Guys how are you @[6] i hope you are doing well @[9]";
$tags = [];
preg_match_all("/@\[(.)\]/", $content, $tags); // Value under @[]

$tags = implode(',', $tags[FIRST_MATCH_GROUP]);

var_dump($tags);

工作示例:

https://3v4l.org/7kYH6

  

5.6.38-7.3.0rc3的输出

     

string(3)“ 6,9”

正则表达式说明:

https://regex101.com/r/cxH6L3/1/

  

/ @ [(。)] /

     

@从字面上匹配字符@(区分大小写)

     

\ [与字符[从字面上(区分大小写)匹配

     

第一个捕获组(。)

     

。匹配任何字符(行终止符除外)

     

\]与字符]完全匹配(区分大小写)

编辑:对于@[]之间的多个数字,您必须将正则表达式调整为@\[(.+)\]并添加一个Ungreedy标志,请参见https://regex101.com/r/cxH6L3/2和{{3 }}