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)
È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top