2012-01-25 12 views

Odpowiedz

76

Jeśli chcesz podzielić helloMister do hello i Mister można użyć preg_split podzielić ciąg w punkcie tuż przed wielką literą przez stosując pozytywne uprzedzona twierdzenie:

$pieces = preg_split('/(?=[A-Z])/',$str); 

i jeśli chcesz podzielić ją jako hello i ister można zrobić:

$pieces = preg_split('/[A-Z]/',$str); 
+0

To też bardzo miłe, dzięki! – cgwebprojects

+6

jeśli pierwszy znak jest już pisany wielkimi literami, to wyrażenie regularne generuje jeden pusty element, jeśli chcesz ommit, możesz użyć najpierw lcfirst: $ pieces = preg_split ('/. (? = [AZ]) /', lcfirst ($ str)) ; – zeldi

+0

Działa to dobrze, jeśli pierwszy znak jest małą literą, ale załóżmy, że musimy rozbić 'RecipesActionModel' i chcemy tylko tablicy trzech elementów' Receipe, Action, Model'. To rozwiązanie tworzy tablicę z czterema elementami, której element 0 jest pusty. – SaidbakR

-1

Spójrz na preg_split, to jak wybuch, ale trwa wyrażenia regularnego

preg_split('~[A-Z]~',$inputString) 
+0

Myślałem o tym samym, zakładam, że chcą również wielkiej litery jako część drugiego słowa. – Matthew

+0

Cool to ładnie, czy to wyprowadza tablicę? – cgwebprojects

3

Spójrz preg_split

$result = preg_replace("([A-Z])", " $0", "helloMister"); 
print_r(explode(' ', $result)); 

hacky siekać. Po prostu nie wstawiaj spacji w łańcuchu wejściowym.

+0

Nieważne, moje bzdury, użyj @codeaddicts. – Matthew

+1

najmniej próbowałeś! ale jego jest lepsze lol – cgwebprojects

Powiązane problemy