Buon giorno, purtroppo l'htmlentities con le lettere accentate maiuscole non funziona, sapere dirmi come posso ovviare a questo inconveniente?
Grazie mille....
Buon giorno, purtroppo l'htmlentities con le lettere accentate maiuscole non funziona, sapere dirmi come posso ovviare a questo inconveniente?
Grazie mille....
Ciao,
non so se ho capito bene il tuo problema...
non riesci a scrivere in html le letter maiuscole accentate?
si fa così:
À -> per fare la A maiuscola e l'accento grave
Á -> per fare la A maiuscola e l'accento acuto
e così via per tutte le lettere.
ti spiego in breve.
Estrapolo da db una stringa, la stessa la devo ripulire con una funzione dai caratteri speciali.
Purtroppo la stringa essendo un titolo, lo devo mettere in maiuscolo.
Facendo in questo modo ho il problema che la funzione non riesce a convertire il risultato in maiuscolo...
cosi:
Il risultato in questo modo è:codice://questa funzione l'ho presa qui sul forum function convalida_w3c($valore) { //per le normali conversioni in HTML e per togliere gli slash inseriti dalla fun. addslashes $valore = stripslashes(htmlentities($valore)); //per i caratteri accentati copincollati da word, outlook ecc $valore= str_replace("a’", "à", $valore); $valore= str_replace("e’", "è", $valore); //$valore= str_replace("È", "è", $valore); $valore= str_replace("i’", "ì", $valore); $valore= str_replace("o’", "ò", $valore); $valore= str_replace("u’", "ù", $valore); //per gli apici copincollati da word, outlook ecc $valore= str_replace("’", "'", $valore); $valore= str_replace("‘", "'", $valore); //per le virgolette copincollate da word, outlook ecc $valore= str_replace("“", """, $valore); $valore= str_replace("”", """, $valore); //per le altre cose $valore= str_replace("–", "-", $valore); $valore= str_replace("…", "...", $valore); $valore= str_replace("……", "......", $valore); return $valore; } $News.= "<h2>".convalida_w3c(strtoupper($arrNews[$nI]['cTitolo']))."</h2>";
La "è" la lascia minuscolacodice:"STANZIAMENTO PER RISTRUTTURAZIONE 21 STRADE è UN'OTTIMA NOTIZIA"
se faccio cosi:
Non converte la "è"..codice:"STANZIAMENTO PER RISTRUTTURAZIONE 21 STRADE &EGRAVE; UN'OTTIMA NOTIZIA"
Sapresti dirmi per favore come posso risolvere?
Grazie mille buona giornata![]()
E aggiungere un
appena dopo al momento in cui il risultato è questoCodice PHP:
$valore= str_replace("è", "È", $valore);
"STANZIAMENTO PER RISTRUTTURAZIONE 21 STRADE è UN'OTTIMA NOTIZIA"
?
Ciao
__________________________________________________ ______
Hotel Parma
prova con questa funzione... frutto di lunghe guerre con i clienti
dovrebbe funzionare anche con codice html, ovvero estrae i testi e li converte
Codice PHP:
// funzione per convertire i testi in codice html nelle sue entità html
function HTMLconvert($text)
{
$finded =array();
$filtered =array();
$pattern="/(<\/?\w+\s*[^>]*\/?\> )?([^<>]*)/mis";
preg_match_all($pattern, $text, $strings, PREG_SET_ORDER);
foreach($strings as $arr)
{
if( !empty($arr[2]) ) $finded[]=$arr[2];
}
$elements=array_unique($finded);
foreach($elements as $el)
{
if (substr($el,0,1) !='/' && !in_array("/$el",$elements))
{
$filtered[]=$el;
}
}
foreach($filtered as $s_key=>$s_val)
{
if(mb_detect_encoding($s_val)=='UTF-8')
{$s_val=iconv('UTF-8', "ISO-8859-1//TRANSLIT",$s_val);}
else
{$s_val=iconv('ISO-8859-1', mb_detect_encoding($s_val)."//TRANSLIT",$s_val);}
$entities[$s_key]=htmlentities($s_val,ENT_QUOTES);
}
$text=str_replace($filtered,$entities,$text);
return ($text);
}
Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle
il mio profilo su PHPClasses e il mio blog laboweb
salve ragazzi, allora la funzione mi restituisce questo errore:
In pratica?codice:preg_match_all() [function.preg-match-all]: Unknown modifier '?' in /var/www/html/interno/function.ssi on line 38 //la linea 38 è questa: preg_match_all($pattern, $text, $strings, PREG_SET_ORDER);
grazie ancora
il forum sega gli slash... cambia la riga con $patter= ....
in
$pattern="/(<\/?\w+\s*[^>]*\/?\> )?([^<>]*)/mis";
Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle
il mio profilo su PHPClasses e il mio blog laboweb
Sinceramente ho notato la funziona htmlentities si impalla e non funziona se usi una codifica di caratteri diversa dalla codifica iso ....
Se usi stringhe utf-8 dovresti specificare alla funzione la differente codifica.
tipo
cmq controlla bene la documentazione perche' e' sempre utile : http://www.php.net/manual/en/function.htmlentities.phpCodice PHP:
$str = htmlentities( $str , ENT_NOQUOTES , "UTF-8" ) ;
Se poi hai problemi con cartatteri utf-8 fai parecchia attenzione anche come i client inviano tali dati e come il server li gestisce.
Ho notato che ff e ie si comportano in maniera diametralmente opposta nell'invio di caratteri cinesi/giapponesi/russi.
FF tende a convertire tali caratteri in &#[numero]; mentre ie no
Queste differenze di codifica possono spesso far impazzire ... per fortuna c'e' js.![]()