preg_split virgole non parentesi all'interno
-
22-09-2019 - |
Domanda
stringa di prova:
Organic whole wheat bread, Monterey Jack Cheese (milk, cheese culture, salt), Hormel Natural Ham (salt, turbinado sugar, lactic acid (not from milk)
output desiderato:
Array (
[0] => Organic whole wheat bread
[1] => Monterey Jack Cheese
[2] => Hormel Natural Ham
)
Non mi importa se i sub-ingredienti appaiono con la voce originale (vale a dire, "Monterey Jack formaggio (latte, la cultura del formaggio, il sale)"), solo che non li vogliono sul proprio perché aren' t aggiunto ingredienti.
Ho trovato un paio di altre domande qui che ho cercato di applicare al mio problema, ma non ho mai avuto i risultati attesi.
Oh, e nel caso in cui non sia preg_split PHP-centric, sto usando PHP.
Grazie in anticipo!
Soluzione
Vorrei prima rimuovere tutte le parentesi ei loro contenuti:
$result = preg_replace('/\s*\([^()]+\)/', '', $subject);
e poi preg_split()
sui restanti virgole. Questo presuppone che le parentesi non sono nidificate.
Se parentesi possono essere nidificate, allora si avrà bisogno di eseguire questo tante volte quanti sono i livelli di nidificazione. Ogni volta, verrà rimossa la parentesi più interna.