Как разделить строку на массив слов и символов - PullRequest
5 голосов
/ 22 июня 2011

Я делю предложение на слова следующим образом:
напр .:

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

результат:

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

Какие у меня могут быть варианты в php для этого?

Ответы [ 5 ]

2 голосов
/ 25 мая 2013

Попробуйте этот метод, используя 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);
2 голосов
/ 22 июня 2011

Ого, это тяжело! Потому что вы также хотите сохранить ",". Вот что нужно сделать:

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

Примечание: в (?<=) и в (?=) вы должны поместить все символы, которые вы также хотите считать словами, даже если до и / или после них нет пробела.

2 голосов
/ 22 июня 2011

Попробуйте что-то вроде:

preg_split('/\s+|\b/', $string)
1 голос
/ 22 июня 2011

Вы можете попробовать что-то вроде

$res =  preg_split( '/ |([.,])/' , $string,-1, PREG_SPLIT_DELIM_CAPTURE| PREG_SPLIT_NO_EMPTY);
0 голосов
/ 22 июня 2011

Вы можете использовать функцию разнесения с разделителем как "" (пробел) http://php.net/manual/en/function.explode.php

...