Então ai vai:
<?php
set_time_limit(900);
$dbHost
=
'localhost';
$dbUser
=
'xxx';
$dbPass
=
'xxx';
$dbName
=
'xxx';
$info = Array(
':P' => ':saltar:',
':\)' => ':sorrir:',
':\(' => ':triste:'
);
$con = mysql_connect($dbHost, $dbUser, $dbPass) or die('Erro linha 15:' . mysql_error());
$sel = mysql_select_db($dbName);
$sql = "SELECT body, ID_MSG FROM smf_messages";
$qry = mysql_query($sql) or die('Erro linha 19: ' . mysql_error());
while($obj = mysql_fetch_array($qry)){
unset($id, $haystack);
$id = $obj['ID_MSG'];
$haystack = $obj['body'];
foreach($info as $needle => $replacement){
$needle = "/" . $needle . "/";
$haystack = preg_replace($needle, $replacement, $haystack);
}
$haystack = mysql_real_escape_string($haystack);
$sqlUp = "UPDATE smf_messages SET body='$haystack' WHERE ID_MSG='$id'";
$qryUp = mysql_query($sqlUp) or die('Erro linha 33: ' . mysql_error());
}
?>
Entretanto como me pareceste um tipo interessado e eu entusiasmei-me, acabei por desenvolver uma solução mais completa:
Ver aqui...Parece grande, mas não é. Está é muito documentado. Se quiseres perde um pouco de tempo a ler que pelo que vi acima, para a próxima já te consegues safar sozinho.
Entretanto isto bonitinho seria estruturar isto no paradigma de orientação por objectos (leia-se "enfiar" isto numa classe). Se houver interesse (apenas para efeitos pedagógicos), diz que eu quando tiver um tempinho reestruturo novamente o código.
Tem atenção ao enfiares os valores de pesquisa na primeira matriz, há determinados caracteres que têm de levar
escape ("\") senão vão dar erro. Tens lá dois exemplos (
e
= :\) e :\( ) por causa dos parêntesis.