2012-02-19 4 views
-1

私は20,000以上の投稿を持つデータベースを持っています。このようなphp preg_match単語を見つけます。私は文字列を返します。

::(:PIN:272F9F64 Me)のすべての

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

Then i want to sleep forever !! 

Me:bb:272F9F64 

ので、私のような署名が含まれている私のデータベースinsdeすべての記事を印刷する記事のほとんどは、署名を持っていますこれらの署名は(PIN:PIN)で始まり、8桁の数字とアルファベットです。

私はそれらを印刷するには、このコードを使用しますが、データベースを投げるとポスト

$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());  

} 
内のすべての署名を削除し、forループのコード**

を更新し

$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>"; 
    } 
} 

が動作していません

まだ署名が機能していません

任意のヘルプみんな

Bbway

+0

出力は何ですか? –

+0

これらがブラックベリーメッセンジャーPINSの場合:1)あなたの質問に本当のPINと思われるものを入れることはおそらく賢明ではありません。 2)コードは16進数の文字で作られているので、 'a-zA-Z'の代わりに' a-fA-F'が必要です。 – SimonMayer

答えて

0

これは、MySQLの中に本当に簡単に行うことができます。

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

nameが持っている分野であるあなたは確かにありますしかし、その中のポスト?どのようにデータベースを設計したのか分かりませんが、個人的に私はnameをユーザーの名前として、contentを投稿のコンテンツとして使用します。フィールド名が正しいことを確認してください。

+0

はい、動作します。署名 –

+0

ユーザ定義関数として 'REGEX_REPLACE'を利用できない場合は、署名の長さを知っているので、より汚いものを試すことができます:' UPDATE brd SET name = LEFT(name、LENGTH(name)-12) WHERE name REGEXP 'PIN:[0-9a-zA-Z] {8} $' ' - あなたの質問によると、署名は12文字であるため、これは機能します。一度だけ実行するとすべて完了です。 –

+0

私のポストを更新しました。 –

0

は、この文字列で検索してください:

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

あなたのプレグマッチにmモディファイアを追加してみてください。マルチラインモードをオンにします。

関連する問題