php preg_match在字符串中找到一个单词

时间:2012-02-19 18:04:51

标签: php preg-match

我有一个包含超过20,000个帖子的数据库。大多数帖子都有签名:

像这样:

If in my dreams is the only
place i can hould u !

Then i want to sleep forever !!

Me:bb:272F9F64

所以我想打印我的数据库中包含签名的所有帖子(Me:PIN:272F9F64)

所有这些签名都以(PIN:或PIN)开头,它们是8位数字和alphabit。

我使用此代码打印它们但它无法正常工作

$get_tit = $db->query("select id,name from brd limit 1000");
while($th=$db->fetch($get_tit)){

 if (preg_match("/PIN:[0-9a-zA-Z]+/", $th['name'])) {
    echo $th['name']."<br>";
    }
}

更新 **

此循环代码抛出数据库并删除帖子中的任何签名

$get_tit = $db->query("SELECT id, name FROM brd LIMIT 1000");
echo 'Results Found :'.mysql_num_rows($get_tit).'<br /><br />';
while($th=$db->fetch($get_tit)){
$result = mysql_query("UPDATE brd SET name=LEFT(name,LENGTH(name)-12) WHERE name REGEXP 'PIN:[0-9a-zA-Z]{8}$' and id='$th[id]'") or die(mysql_error());      

}

但它仍然无法使用签名

任何帮助伙伴

Bbway

3 个答案:

答案 0 :(得分:0)

尝试此查询:

SELECT id, name, FROM brd WHERE name REGEXP 'PIN:?[0-9a-zA-Z]{8}$' LIMIT 1000

答案 1 :(得分:0)

这可以在MySQL中轻松完成:

SELECT id, name FROM brd WHERE name REGEXP 'PIN:[0-9a-zA-Z]+$' LIMIT 1000

你确定name是包含帖子的字段吗?我不知道你的数据库是如何设计的,但我个人认为我有name作为用户名,content作为帖子的内容。确保您拥有正确的字段名称。

答案 2 :(得分:0)

尝试将m修饰符添加到preg匹配中。它打开了多线模式。