php - 如何从数据库中查找字符串中的文本?

时间:2011-11-24 11:08:57

标签: php mysql

让我说我有:

$title = "Rihanna - Man Down";

和一个数据库有多行,包括一个名为“name”的字段,其中包含“Rihanna”值

现在......我如何检查$ title中是否存在“Rihanna”,如果它确实如何在“Rihanna”上添加如下链接:

用其他词来检查$ title中的一个表达是否存在于数据库中

  • 我认为第二种配方更好
<a href="artist?id=Rihanna">Rihanna</a> - Man Down

我想像youtube那样做一些事情;音乐视频更清晰

3 个答案:

答案 0 :(得分:3)

如果我理解正确,可以做这项工作:

然后首先在DataBase中搜索,您的查询必须是这样的:

//在提交的“名称”

中搜索DataBase中的单词
$title = "Rihanna - Man Down";
$arr = explode('-', $title); 
$title = $arr[0];

$result = mysql_query("SELECT name FROM table WHERE name LIKE '%" . mysql_real_escape_string($title) . "%'");

//如果找到结果,那么我们在此循环中替换并生成链接

while($row = mysql_fetch_array( $result )) {
    $str = str_replace($title, '<a href="artist?id='.$title.'">'.$title.'</a>', $row['name']);
    echo $str; //<a href="artist?id=Rihanna">Rihanna</a> - Man Down
}

答案 1 :(得分:1)

将标题拆分为单词,并为每个单词检查数据库是否包含具有该名称的行。如果是,请用链接替换该单词的出现。

foreach (preg_split("/\s+/", $title) as $word) {
    if (word_in_database($word)) {
        $title = str_replace($word, "<a href=\"artist?id=$word\">$word</a>", $title);
    }
}

答案 2 :(得分:1)

$words = explode("-", $title);
$result = array();

foreach ($words as $word)
{
    $word = trim($word);
    $res = mysql_query("SELECT name FROM table WHERE name='" . mysql_real_escape_string($word) . "'");

    if (mysql_num_rows($res) > 0)
    {
        $result[] = '<a href="artist?id=' . $word . '">' . $word . '</a>';
    }
    else
    {
        $result[] = $word;
    }
}

$result = implode($result, " - ");

如果来自其他艺术家的歌曲名为Pink,但您的数据库中有艺术家Pink,则会链接到“artist?id = Pink”。