PHP在字符串中查找Hashtags并插入数据库

时间:2016-07-20 17:47:40

标签: php

我想从字符串中找到所有主题标签并将它们插入表(sql)。

$string = "hello #hashtag_1 bla bla #hashtag_2";

我不知道如何做到这一点。有什么想法吗?

    function getHashtags($string) {  
    $hashtags= FALSE;  
    preg_match_all("/(#\w+)/u", $string, $matches);  
    if ($matches) {
        $hashtagsArray = array_count_values($matches[0]);
        $hashtags = array_keys($hashtagsArray);
    }
    return $hashtags;
}

1 个答案:

答案 0 :(得分:2)

当你返回$hashtags时,它将作为数组返回

Array
(
    [0] => #hashtag_1
    [1] => #hashtag_2
)

您需要将数组合并为一个字符串。使用此作为getHashtags()函数(我选择以逗号分隔,但您可以选择其他分隔符)

function getHashtags($string) {  
    $hashtags = FALSE;  
    preg_match_all("/(#\w+)/u", $string, $matches);  
    if ($matches) {
        $hashtags = implode(",", $matches[0]);
    }
    return $hashtags;
}

$hashtags将返回#hashtag_1,#hashtag_2 然后你的$sql_query应该改为

$sql_query = mysqli_query($conn, "INSERT INTO hashtags VALUES('" . getHashtags($string) . "')")

还要确保添加一个检查$hashtags != FALSE,以便只有在有标签的情况下才会插入数据库

所以这是完整的代码:

function getHashtags($string) {  
    $hashtags = FALSE;  
    preg_match_all("/(#\w+)/u", $string, $matches);  
    if ($matches) {
        $hashtags = implode(",", $matches[0]);
    }
    return $hashtags;
}

$hashtags = getHashtags($string);
if($hashtags != FALSE) {
    $sql_query = mysqli_query($conn, "INSERT INTO hashtags VALUES('" . $hashtags . "')")
}