Questo è ciò che hoSostituire ogni personaggio con un elemento
$str = 'Just a <span class="green">little</span> -text åäö width 123#';
Questo è quello che mi serve
Risultati in campate e spazi, potrei essere a capo pure.
$result = '<span></span><span></span><span></span><span></span> <span></span> <span class="green"><span></span><span></span><span></span><span></span><span></span><span></span></span> <span></span><span></span><span></span><span></span><span></span> <span></span><span></span><span></span> <span></span><span></span><span></span><span></span><span></span> <span></span><span></span><span></span>';
Ci si potrebbe chiedere che cosa possa essere necessario per questo. Voglio costruire una cosa dove mai il personaggio è rappresentato da un blocco. Sembrerà un po 'come Defrag su Windows XP.
Domanda
- sostituire ogni personaggio con
<span></span>
. - Non toccare l'arco HTML che già esiste nella stringa (potrebbe essere difficile?). Ci può essere più di un elemento HTML.
- Non toccare spazi e newline.
- Regexp dovrebbe farlo? o Xpath?
Cosa ho fatto finora?
ho trovato articoli sulla espressione regolare, ma non sostituendo tutti i caratteri (spazi estratto e ritorno a capo)
$result = preg_replace("/???/", "<span></span>", $str);
print_r($result);
prova 'preg_replace ("/([^: lo spazio : \ n])/"," ", $ str);' [] è un set di caratteri,^NON è,: spazio: o \ s è uno spazio \ n è newline – Waygood
Il "non toccare l'HTML che già esiste nella stringa "parte è dove le soluzioni regex causano problemi. Vuoi veramente usare un parser DOM, per iterare solo sopra i textnode e applicare una '/ \ S /' -> '' sostituzione su quelli. [Ecco una buona panoramica delle opzioni di analisi del DOM] (http://stackoverflow.com/questions/3577641/how-to-parse-and-process-html-xml) –
C'è solo un intervallo HTML o ci sono Di Più ? – HamZa