Как разбить строку через регулярное выражение в PHP - PullRequest
0 голосов
/ 31 января 2019

String:

"hello, how are you? you are fine. i am good too." 

Я хочу разбить эту строку на основе , ? . этих символов в php через reg-ex, или вы можете предоставить мне простой reg-ex.

Желаемый результат в массиве:

[0]hello 
[1]how are you 
[2]you are fine 
[3]i am good too

Пожалуйста, предоставьте регулярное выражение для этого.опять же вопрос в том, чтобы предоставить регулярное выражение, с помощью которого я могу разбить строку.Соответствующие символы должны быть . , ?

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Вы можете использовать preg_split с этим регулярным выражением:

/[^A-Za-z\s]\s*/

Он ищет символ, который не является буквой или пробелом, за которым, возможно, следует один или несколько пробелов.Это учитывает ситуацию, когда после знака препинания нет места.Обратите внимание, что мы используем флаг PREG_SPLIT_NO_EMPTY для preg_split, поэтому, если строка заканчивается знаком препинания, мы не получаем пустых строк в выводе.

$string = "hello, how are you?you are fine. i am good too.";
$output = preg_split('/[^A-Za-z\s]\s*/', $string, -1, PREG_SPLIT_NO_EMPTY);
print_r($output);

Вывод:

Array (
    [0] => hello
    [1] => how are you
    [2] => you are fine
    [3] => i am good too 
)

Демонстрация на 3v4l.org

0 голосов
/ 31 января 2019

Вы можете просто использовать метод preg_split с регулярным выражением, которое соответствует любому несловесному символу, за которым следуют пробел и несловесный символ в конце текста.if используется для pop конечной пустой строки, присутствующей в массиве, если ваш входной текст содержит знак пунктуации в самом конце.

$input = "hello, how are you? you are fine. i am good too.";
$output = preg_split( "/\W(?:\s|$)/", $input );

if(strlen(end($output))==0)
{
   array_pop($output);
}

foreach ($output as $item) {
    echo $item;
    echo "\n";
}

выход:

hello
how are you
you are fine
i am good too
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...