php preg_match найти слово в строке - PullRequest
0 голосов
/ 19 февраля 2012

У меня есть база данных с более чем 20 000 сообщений. большинство постов имеют подпись:

как этот:

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

Then i want to sleep forever !!

Me:bb:272F9F64

, поэтому я хочу напечатать все сообщения в моей базе данных, которые содержат подписи, такие как (Я: PIN: 272F9F64)

все эти подписи начинаются с (PIN: или PIN), и они состоят из 8 цифр и букв.

Я использовал этот код для печати, но он не работает

$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 голосов
/ 19 февраля 2012

Это можно сделать очень легко в MySQL:

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

Вы уверены, что name это поле, в котором есть сообщение?Я не знаю, как у вас создана база данных, но лично я бы назвал name именем пользователя и content содержимым поста.Убедитесь, что у вас правильное имя поля.

0 голосов
/ 19 февраля 2012

Попытайтесь добавить модификатор m в ваш матч.Включен многострочный режим.

0 голосов
/ 19 февраля 2012

Попробуйте этот запрос:

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