ccc

Quitar todos los enlaces de una cadena

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