我正在构建一个系统,并希望允许人们在其中留下带有哈希标记的注释,例如“这是#example #of #what I would to achieve”。
到目前为止,我已经设法插入第一个单词,如果有多个单词被哈希标记,请参阅下文:
happysam | #new #more #insert | #new
happysam | #new #more #insert | new
我为实现这一目标而编写的代码是:
preg_match_all('/#(\w+)/',$message,$matches);
$len = count($matches);
if($len > 0)
{
foreach($matches as $match)
{
$i = 0;
$ins = "INSERT INTO teamHash (user, message, hashtag,time) VALUES ('$user', '$message', '$match[$i]','$time')";
$query = $conn->prepare($ins);
$query->execute();
}
}
修改我的代码的最佳方法是什么,以便我可以遍历每个散列标记的单词,然后在文本中插入,即“example”而不是“#example”?
答案 0 :(得分:2)
preg_match_all
在成功匹配时返回多维数组。这里,$matches[0]
是完整模式匹配的数组,$matches[1]
是由第一个带括号的子模式匹配的字符串数组。你应该循环遍历$matches[1]
:
foreach ($matches[1] as $key => $value) {
echo $value.' ';
# code for inserting into database...
}
输出
new more insert example new more insert
答案 1 :(得分:0)
不应该需要正则表达式:
$matches = array_map('trim', explode('#', $message));