PHP: come implementare "mail merge" e "qualcos'altro"?

-1

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.

    
posta ProgrammerNewbie 18.09.2016 - 17:04
fonte

1 risposta

0

What is this "merge tag" concept called?

Il modo in cui lo stai facendo si chiama sostituzione delle stringhe.

Quello che stai cercando di fare è chiamato "riempire lo spazio vuoto".

Ci sono altri modi per farlo. Eccone uno:

$email_body = "Dear $first_name.\n".

vedi l'esempio

Ciò significa che la tua lettera è nella fonte. Il tuo modo di farlo ha senso se la lettera non è nella fonte ma è semplicemente un file di testo.

Il tuo "qualcos'altro" ha già una risposta su stackoverflow: crea un insieme di tutte le possibili corrispondenze per una determinata regex

    
risposta data 18.09.2016 - 17:57
fonte

Leggi altre domande sui tag