2015-07-12 60 views
3

所以我寫了下面的代碼來顯示句子中第四個句號/句點之後的單詞。PHP分解顯示分隔符

$text = "this.is.the.message.seperated.with.full.stops."; 
$limit = 4; 

    $minText = explode(".", $text); 

    for($i = $limit; $i < count($minText); $i++){ 
     echo $minText[$i]; 
    } 

該算法正在工作,它顯示了第四個「。」後面的句子的其餘部分。句號/句號......我的問題是輸出結果並沒有在句子中顯示句號,因此它顯示的只是文本而沒有正確的標點符號。「 ....有人可以請幫我解決如何修復代碼以顯示全停/期間?

非常感謝

+0

你想看到在年底的話,或只是一個之間存在的所有時間? –

+0

你能說明你需要什麼來避免一些混淆嗎?例如 - 你需要「分離。完全停頓」。或者「......分開。完全停頓」。或者是其他東西? – Endijs

回答

1

你可以試試這個...

for($i = $limit; $i < count($minText); $i++){ 
     echo $minText[$i]."."; 
    } 

通知,echo命令//年底增加的時期。 「」;

+0

這解決了我的問題......作爲魅力@superkayrad工作;) – Eric

1
$text = "this.is.the.message.seperated.with.full.stops."; 
$limit = 4; 
$minText = explode(".", $text); 
for($i = $limit; $i < count($minText); $i++){ 
    echo $minText[$i]."."; 
} 
1

如果你想打破它在單詞之間的時間間隔,但保持一個是在結束爲實際的標點符號,你可能需要使用preg_replace()的週期轉換成另一種字符,然後爆炸它。

$text = "this.is.the.message.seperated.with.full.stops."; 
$limit = 4; 

//replace periods if they are follwed by a alphanumeric character 
$toSplit = preg_replace('/\.(?=\w)/', '#', $text); 

    $minText = explode("#", $toSplit); 

    for($i = $limit; $i < count($minText); $i++){ 
     echo $minText[$i] . "<br/>"; 
    } 

這將產生

seperated 
with 
full 
stops. 

當然,如果你只是單純的想打印所有的句號,然後將它們添加在您echo期限之後。

echo $minText[$i] . "."; 
1

而是拆分輸入字符串,然後遍歷它,你可以用strpos()函數改變偏移參數找到分隔符(。)在字符串中的第n個位置。

然後,它只是從我們剛剛確定的位置打印子字符串的問題。

<?php 

$text = "this.is.the.message.seperated.with.full.stops."; 
$limit = 4; 
$pos = 0; 

//find the position of 4th occurrence of dot 
for($i = 0; $i < $limit; $i++) { 
    $pos = strpos($text, '.', $pos) + 1; 
} 

print substr($text, $pos); 
1

如果需要輸出「 seperated.with.full.stops」,那麼你可以使用:

<?php 

$text = "this.is.the.message.seperated.with.full.stops."; 
$limit = 4; 

$minText = explode(".", $text); 
$minText = array_slice($minText, $limit); 

echo implode('.', $minText) . '.';