il primo (e il secondo) parametro di str_replace può un array:
Codice PHP:
<?php
$parole_vietate = array('stringa', 'essere', 'parole'); // stringhe da rimuovere
$stringa = 'questa è una stringa da cui devono essere rimosse delle parole';
$new_stringa = str_replace($parole_vietate, '', $stringa);
// se hai una versione recente di php puoi usare str_ireplace
// che non distingue tra maiuscole e minuscole (non case sensitive)
?>
Pertanto quel ciclo di for che fai per sostituire lo ritengo errato... o quantomeno errato...
inoltre count ti restituisce il numero di elementi:
Codice PHP:
$caratteri = array("'","_","-");
$max = count($caratteri);
nel tuo caso pari a 3... ma le chiavi non partono da 1 e arrivono a 3!!!
esse partono da 0 e arrivano a due!!!!
pertanto l'ultimo ciclo di for che esegui in cui
Codice PHP:
$dw_titolo = str_replace($caratteri[3]," ",$titolo);
risulta essere errato dato che $caratteri[3] non esiste!!!
spero di esserti stato chiaro e di aiuto!
ciao