2012-01-25 43 views
26

Tôi có chuỗi như,php phát nổ ở các chữ cái viết hoa?

$a = 'helloMister'; 
$b = 'doggyWaltz'; 
$c = 'bumWipe'; 
$d = 'pinkNips'; 

Làm thế nào tôi có thể phát nổ tại chữ in hoa, tìm trên google trong một thời gian và trở lại với không có gì!

Cảm ơn.

Trả lời

76

Nếu bạn muốn chia helloMister vào helloMister bạn có thể sử dụng preg_split để phân chia các chuỗi tại một điểm ngay trước khi ký tự hoa bởi sử dụng khẳng định lookahead tích cực:

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

và nếu bạn muốn chia nó như helloister bạn có thể làm:

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

Điều này cũng rất đẹp, cảm ơn! – cgwebprojects

+6

nếu ký tự đầu tiên đã được viết hoa, regex này tạo ra một phần tử trống, nếu bạn muốn sử dụng lcfirst trước: $ pieces = preg_split ('/. (? = [AZ]) /', lcfirst ($ str)) ; – zeldi

+0

Điều này có hiệu quả nếu ký tự đầu tiên là chữ thường, nhưng Giả sử chúng ta cần phát nổ 'RecipesActionModel' và chúng ta chỉ muốn mảng của ba phần tử' Receipe, Action, Model'. Giải pháp này tạo mảng với bốn phần tử mà phần tử 0 là rỗng. – SaidbakR

-1

Nhìn vào preg_split, nó giống như nổ tung nhưng phải mất một biểu thức chính quy

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

Tôi đã suy nghĩ điều tương tự, tôi cho rằng họ cũng muốn viết hoa như một phần của từ thứ hai. – Matthew

+0

Mát mẻ này là tốt đẹp, không sản lượng này một mảng? – cgwebprojects

3

Tra cứu preg_split

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

hacky hack. Chỉ cần không có dấu cách trong chuỗi đầu vào của bạn.

+0

Nevermind, crap của tôi, sử dụng @codeaddicts. – Matthew

+1

ít nhất bạn đã thử! nhưng anh ấy là tốt hơn lol – cgwebprojects

Các vấn đề liên quan