Ho bisogno di implementare qualcosa come la stampa unione usando PHP. Significando, avrò una stringa contenente speciali "merge tag" che verranno sostituiti con determinati valori. Ad esempio:
Dear *|FIRST_NAME|*
Il *|FIRST_NAME|*
è quello che sto chiamando un "tag di unione", a proposito. Ovviamente, questo può essere implementato usando un semplice str_replace
. O se volessi supportare la capacità di "sfuggire" a questi tag di unione (ad esempio tramite un \
, come \*|FIRST_NAME|*
), allora forse usa regex per trovare un tag di merge non preceduto da \
- e unisci solo quelli .
Che cos'è questo concetto di "tag di merge" chiamato? Prima di implementare la mia soluzione, voglio vedere se esiste già una funzione o una libreria per ciò che devo fare. Però non so cosa cercare su Google.
Inoltre, c'è questo "qualcos'altro" che devo implementare. Di nuovo, non so come si chiama. È una sintassi personalizzata che consente la costruzione di una stringa utilizzando "token" che rappresentano più valori. Ad esempio:
Hello ((world)|(planet))
Il ((world)|(planet))
è ciò che chiamo "token". L'esempio suggerisce che posso avere le seguenti stringhe:
-
Hello world
-
Hello planet
Ho bisogno di qualche tipo di funzione per elaborare stringhe con tali token e restituire una matrice di tutti i possibili output. Dovrebbero essere supportati token illimitati all'interno della stringa originale, oltre al supporto per "annidare" questi token, come:
(Hello ((world)|(planet)))|(Greetings ((cruel world)|(to you, dear sir.)))
Ciò produrrebbe:
-
Hello world
-
Hello planet
-
Greetings cruel world
-
Greetings to you, dear sir.
Che cos'è questo concetto di "token"? E c'è una libreria o qualcosa che esiste già che posso usare per questo?
A proposito, nei due esempi, i simboli effettivi usati nei "merge tag" e nei "token" sono irrilevanti.