2011-06-22 26 views
5

tôi làm tách một câu lời như sau:
Eg .:Làm thế nào để tôi chia chuỗi lời nói và biểu tượng kết hợp mảng

This is a test from php, python, asp and also from other languages. Alash! i cannot get my output as followings. 

kết quả:

array( 
[0]=>"This", 
[1]=>"is", 
[2]=>"a", 
[3]=>"test", 
[4]=>"from", 
[5]=>"php", 
[6]=>",", 
[7]=>"python", 
[8]=>",", 
[9]=>"asp", 
[10]=>"and", 
[11]=>"also", 
[12]=>"from", 
[13]=>"other", 
[14]=>"languages", 
[15]=>".", 
[16]=>"Alash", 
[17]=>"!", 
[18]=>"I", 
[19]=>"cannot", 
[20]=>"get", 
... 
) 

gì có thể tùy chọn của tôi trong php cho nó?

Trả lời

2

Hãy thử một cái gì đó như:

preg_split('/\s+|\b/', $string) 
+0

đó là một cái gì đó gr8 ... sẽ đánh giá cao bỏ qua không gian quá – KoolKabin

+1

tốt hơn để sử dụng '/ \ s + | \ b (? = \ W) /', sau đó bạn không kết thúc với tất cả những chuỗi rỗng. – mhyfritz

+0

gr8 một ... thnx nó đã làm việc – KoolKabin

1

Bạn có thể thử somthing như

$res = preg_split('/ |([.,])/' , $string,-1, PREG_SPLIT_DELIM_CAPTURE| PREG_SPLIT_NO_EMPTY); 
+0

xin lỗi nó đã không hoạt động như mong đợi .... – KoolKabin

+0

bạn đã thử chỉnh sửa chưa? – Shameer

2

Wow, đó là một một khó khăn! Bởi vì bạn muốn giữ "," là tốt. Dưới đây là những việc cần làm:

$string = "I beg to differ, you can get it as the previous."; 
$words = preg_split('/\s+|(?<=[,\.!\?])|(?=[,\.!\?])/',$string); 

Lưu ý: trong (?<=) và trong (?=), bạn phải đặt tất cả các ký tự mà bạn muốn được coi như lời là tốt, thậm chí nếu không có không gian trước và/hoặc sau họ.

+1

Đó phải là câu trả lời đúng. – sznowicki

2

Hãy thử phương pháp này sử dụng Explode

function multiexplode ($delimiters,$string) 
{ 

    $ready = str_replace($delimiters, $delimiters[0], $string); 
    $launch = explode($delimiters[0], $ready); 
    return $launch; 
} 

$text = "here is a sample: this text, and this will be exploded. this also | this one too :)"; 

$exploded = multiexplode(array(",",".","|",":"),$text); 

print_r($exploded); 
Các vấn đề liên quan