簡體   English   中英

如何在PHP中通過正則表達式來中斷字符串

[英]How to break string through regex in PHP

串:

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

我想根據來打斷這個字符串, ? . , ? . 通過reg-ex在php中使用這些字符,或者您可以為我提供簡單的reg-ex。

數組中的所需結果:

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

請為此提供正則表達式。 再次的問題是提供正則表達式,通過它我可以打破字符串。 匹配字符應為. , ? . , ?

您可以在此正則表達式中使用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上的演示

您可以將preg_split方法與正則表達式配合使用,該正則表達式與任何非單詞字符相匹配,后跟空格和文本末尾的非單詞字符。 if輸入文本的末尾確實包含標點符號,則使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM