Smarty sostituisce il testo con virgolette doppie
Domanda
Ho la seguente stringa nella variabile $ test di smarty (php templating system):
<img height="113" width="150" alt="Sunset" src="/test.jpg"/>
Voglio aggiungere " em " all'altezza e alla larghezza in questo modo:
{$test|replace:'" w':'em" w'|replace:'" a':'em" a'}
Ma questo non funziona ... Qual è il problema e la soluzione?
Soluzione
il mio regex non è il massimo, o ti darei un abbinamento migliore, ma forse usare ciò che hai attraverso il regex sostituire funzionerebbe.
{$test|regex_replace:'/".w/':'em" w'|regex_replace:'/".a/':'em" a'}
altri matcher da provare
'/\".w/'
'/".*w/'
'/\".*w/'
Al momento non posso giocare con i miei siti smarty, ma prima rimuoverei " dal valore di sostituzione, per vedere se il bug è lì, quindi rimuoverlo dal matcher e cercare solo altezza / larghezza.
altrimenti, se possibile, farei la sostituzione in PHP.
Altri suggerimenti
Sai & # 8216; em & # 8217; le unità con attributi HTML larghezza / altezza non sono valide, giusto? Questo è solo CSS.
Con Aggiorno la ricerca intelligente e sostituisci puoi fare così:
Pattern di ricerca:
<img height="$h" width="$w" $attributes/>
Sostituisci modello:
<img height="$[h]em" width="$[w]em" $attributes"/>
Quando fai clic su " Cerca " pulsante, tutte le occorrenze vengono evidenziate prima di applicare la sostituzione in modo da poter effettuare ulteriori controlli, dopodiché è possibile applicare la sostituzione in modo sicuro.