Come posso ottenere le corrispondenze quando utilizzo preg_replace in PHP?
-
08-06-2019 - |
Domanda
Sto cercando di prendere le lettere maiuscole di un paio di parole e avvolgerle in tag span.sto usando preg_sostituisci per scopi di estrazione e confezionamento, ma non restituisce nulla.
preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)
Soluzione
Devi mettere lo schema tra parentesi /([A-Z])/
, come questo:
preg_replace("/([A-Z])/", "<span class=\"initial\">$1</span>", $str)
Altri suggerimenti
\0
corrisponderà anche all'intera espressione corrispondente senza eseguire un'acquisizione esplicita utilizzando le parentesi.
preg_replace("/[A-Z]/", "<span class=\"initial\">\\0</span>", $str)
Come sempre, puoi andare a php.net/preg_replace o php.net/<qualsiasi termine di ricerca> per cercare rapidamente la documentazione.Cita la documentazione:
\0 o $0 si riferisce al testo a cui corrisponde l'intero modello.
Dal preg_replace documentazione su php.net:
sostituzione può contenere riferimenti del modulo n o (poiché Php 4.0.4) $ n, con quest'ultima forma che è quella preferita.Ogni riferimento verrà sostituito dal testo catturato dal modello tra parentesi.
Vedi l'esempio di Flubba.
Utilizza le parentesi attorno all'acquisizione desiderata.