每次在一个字符串中都有一个带#的单词我希望将该单词保存在数组中,这里是我的代码:
<?php
function tag($matches)
{
$hash_tag = array();
$hash_tag[]=$matches[1];
return '<strong>' . $matches[1] . '</strong>';
}
$test = 'this is a #test1 #test2 #test3 #test4 #test5 #test6';
$regex = "#(\#.+)#";
$test = preg_replace_callback($regex, "tag", $test);
echo $test;
?>
但我不知道如何将每个新单词放在数组$ hash_tag的新单元格中 我真的需要这方面的帮助
答案 0 :(得分:1)
尝试使用preg_match_all()
在一个数组中获得所有匹配后,您可以循环遍历它。
答案 1 :(得分:1)
我可以看到你想同时做两件事
你可以尝试
$hash_tag = array();
$tag = function ($matches) use(&$hash_tag) {
$hash_tag[] = $matches[1];
return '<strong>' . $matches[1] . '</strong>';
};
$test = 'this is a #test1 #test2 #test3 #test4 #test5 #test6';
$regex = "/(\#[0-9a-z]+)/i";
$test = preg_replace_callback($regex, $tag, $test);
echo $test;
var_dump($hash_tag); <------ all words now in this array
输出
这是#test1 #test2 #test3 #test4 #test5 #test6
array (size=6)
0 => string '#test1' (length=6)
1 => string '#test2' (length=6)
2 => string '#test3' (length=6)
3 => string '#test4' (length=6)
4 => string '#test5' (length=6)
5 => string '#test6' (length=6)
答案 2 :(得分:0)
这里是正则表达式:/\#[a-zA-Z0-9]*/
在PHP中,我相信你会使用preg_match_all('/\#[a-zA-Z0-9]*/', string)
答案 3 :(得分:0)
使用preg_match_all()
并循环浏览所有匹配项:
<?php
$test = 'this is a #test1 #test2 #test3 #test4 #test5 #test6';
$regex = "(\#[^#]+?)";
preg_match_all($regex, $test, $hash_tag);
foreach ($hash_tag as $match) {
echo '<strong>' . $match . '</strong>';
}
?>