Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [php xpath utf-8] problema replace caratteri

    ho bisogno di aiuto per riuscire a sostituire dei caratteri all'interno di una stringa.
    spiego velocemente il problema perché è un caso un po' particolare:

    tutto è in utf-8, il file PHP così come il file XML

    Codice PHP:
    header('Content-Type: text/html; charset=utf-8');
    mb_internal_encoding("UTF-8"); 
    ho un file XML così strutturato:

    codice:
    <dizionario lettera="a">
    	<parola id="1">
    		<lemma>abaca</lemma>
    		<sillabazione ordine="" accentazione="à-ba-ca">à-ba-ca</sillabazione>
    	</parola>
    	<parola id="2">
    		<lemma>abacà</lemma>
    		<sillabazione ordine="" accentazione="a-ba-cà">a-ba-cà</sillabazione>
    	</parola>
    </dizionario>
    al quale accedo tramite xpath:

    Codice PHP:
    $path "//sillabazione/@accentazione";
    $sillTmp $xpath->evaluate($path$val);

    $accenti = array();
    foreach(
    $sillTmp as $val){
        
    array_push($accenti$val->nodeValue);

    fin qui tutto bene, ma quando cerco di sostituire le lettere accentate né il preg_replace né lo str_replace funzionano.

    esempio:
    Codice PHP:
    $sillabazione str_replace('à'"à"$accenti[0]); 
    pensavo fosse un problema di codifica ma ho provato con tutte le possibili opzioni (&amp;agrave; - &amp;#224; - &amp;#xE0;) e non è servito a nulla, a questo punto mi sorge il dubbio che il problema sia dovuto al fatto che i dati li recupero via xpath...
    mah!
    qualcuno può aiutarmi?

  2. #2
    nessuno che ci capisca qualcosa?

  3. #3

    risolto!!

    vi posto la soluzione magari servirà a qualcun'altro a non perdere un'intera giornata.
    Codice PHP:
    $strhtmlentities($accenti[0], ENT_COMPAT"UTF-8");
    $sillabazione preg_replace('/&a(acute|grave);/','a',$acc);
    $sillabazione html_entity_decode($sillabazione); 
    resta un mistero perché il preg_replace non vede "à" mentre vede l'entità html...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.