2011-06-22 9 views
5

robię podzielone zdanie na słowa jako poniższych:
np .:Jak podzielić ciąg słów i symboli skojarzonej tablicy

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

Wynik:

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", 
... 
) 

Co może być moim opcje w php na to?

Odpowiedz

2

spróbować czegoś jak:

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

że coś gr8 ... doceni pomijanie spacji zbyt – KoolKabin

+1

lepiej użyć '/ \ s + | \ b (? = \ W) /', wtedy nie kończ z tymi wszystkimi pustymi ciągami. – mhyfritz

+0

gr8 one ... Thnx to działało – KoolKabin

1

Można spróbować somthing jak

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

Przepraszam, że nie zadziałało zgodnie z oczekiwaniami ... – KoolKabin

+0

czy wypróbowałeś edytowany? – Shameer

2

wow, to jest trudny! Ponieważ chcesz zachować także ",". Oto co należy zrobić:

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

Uwaga: w (?<=) aw (?=), należy umieścić wszystkie znaki, które mają być traktowane jako słowa, jak również, nawet jeśli nie ma miejsca przed i/lub po nich.

+1

To powinna być poprawna odpowiedź. – sznowicki

2

Spróbuj tej metody przy użyciu 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); 
Powiązane problemy