Identifica e mostra quali caratteri proibiti sono in una stringa
Domanda
Sto cercando di trovare il modo migliore per farlo in PHP:
Devo analizzare una stringa.
Alcuni personaggi sono vietati (cioè: virgola, semicomma, spazio, percentuale ... ma può essere qualsiasi personaggio che desidero, non solo segni di punteggiatura!)
Vorrei stampare una riga per ogni carattere proibito nella stringa:
$string = "My taylor, is rich%";
Dopo aver analizzato, voglio stampare:
Character COMMA is forbidden
Character PERCENTAGE is forbidden
La sumum potrebbe essere quella di avere una sola riga per più errori con lo stesso carattere.
Alcuni di voi hanno riscontrato un tale problema?
Ho provato a regex e strpo, ma senza risultati significativi.
Soluzione
Uso preg_match_all.
$forbidden = "/[,;%]/";
$string = "My taylor, is rich%; he is breaking my bank, natch";
$matches = null;
preg_match_all($forbidden, $string, $matches);
$chars = $matches ? array_unique($matches[0]) : array();
foreach ($chars as $char) {
echo "Character {$char} is forbidden\n";
}
L'output di quanto sopra è:
Character , is forbidden
Character % is forbidden
Character ; is forbidden
Il preg_match_all
restituirà tutti i casi del $forbidden
Regex. Puoi regolare i personaggi in quel regex come ritieni opportuno. Il array_unique
eliminerà i duplicati.
Infine, sto solo producendo i personaggi stessi nell'output. Se vuoi parole come "virgola", "percentuale", ecc ..., dovrai creare un hash per questo.