Quitar todos los enlaces de una cadena pero conservando el texto que enlaza (solo quita el <a>)
function quitarEnlaces($str){
$regex = '/<a (.*)<\/a>/isU';
preg_match_all($regex,$str,$result);
foreach($result[0] as $rs)
{
$regex = '/<a (.*)>(.*)<\/a>/isU';
$text = preg_replace($regex,'$2',$rs);
$str = str_replace($rs,$text,$str);
}
return $str;
}
-----------------------------------------------------------
EJEMPLO GENERAL:
function quitarEnlaces($str){
$regex = '/<a (.*)<\/a>/isU';
preg_match_all($regex,$str,$result);
foreach($result[0] as $rs)
{
$regex = '/<a (.*)>(.*)<\/a>/isU';
$text = preg_replace($regex,'$2',$rs);
$str = str_replace($rs,$text,$str);
}
return $str;
}
$DBServer = 'localhost';
$DBUser = 'xxx';
$DBPass = 'xxx';
$DBName = 'xxx';
$conn = new mysqli($DBServer, $DBUser, $DBPass, $DBName);
if ($conn->connect_error) {
trigger_error('Database connection failed: ' . $conn->connect_error, E_USER_ERROR);
}
$sql='select id, post_content from wp_posts where YEAR(post_date) < 2007';
$rs = $conn->query($sql);
if($rs === false)
trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->error, E_USER_ERROR);
else
$rows_returned = $rs->num_rows;
$arrFinal = array();
$rs->data_seek(0);
while($row = $rs->fetch_assoc()) {
$arrAux = array();
$arrAux["id"] = $row["id"];
$arrAux["post_content"] = addslashes(quitarEnlaces($row["post_content"])); // addslashes para escapar comillas simples q haya en el texto
$arrFinal[] = $arrAux;
}
// print_r($arrFinal);
$total = count($arrFinal);
$error = false;
for ($i=0; $i < $total; $i++) {
$query = "update wp_posts set post_content = '".$arrFinal[$i]["post_content"]."' where id = ".$arrFinal[$i]["id"];
if($conn->query($query) === false) {
echo "<h1>ERROR EN: ".$query."</h1>";
$error = true;
exit;
}
else {
echo "BIEN EN: ".$query."<hr>";
}
}
if (!$error)
echo "<hr>TODO BIEN. FIN";
else
echo "<hr>HA HABIDO UN ERROR";
No hay comentarios:
Publicar un comentario