2014-06-05 33 views
0

的第一個字符我有這樣的代碼:使preg_split不顯示句

<?php 
header('Content-type: text/html; charset=utf-8'); 
$re = "/[.\!\?][\s\n\r\t][A-Z]/"; 
$forbiddenwords=array("on", "ja", "ning", "ega", "ehk", "või", "aga", "kuid", "ent", "vaid", "et", "kui", "kuna", "sest", "kuni", "kuigi", "ehkki", "nagu"); 
$text = 'Oma eluajal ja veel 18. sajandi lõpul oli Bach tuntud vaid võrdlemisi kitsas ringkonnas, heliloojana hakati teda laialt tunnustama alles 19. sajandi esimesel poolel. Praegu peetakse teda põhiliseks heliloojaks barokiajastul ja üheks suurimaks terves muusikaajaloos. Tema loomingut on peetud saksa klassikalise muusika kõrgaja alguseks'; 

function splitintosentences($re, $text){ 
    $sentences = preg_split($re, $text, -1, PREG_SPLIT_NO_EMPTY); 
    print_r ($sentences); 
} 

splitintosentences($re, $text); 

?> 

一切都運行得很好,但是當程序打印出來的句子,它不顯示的句子的第一個字母。例如,如果句子是「狗是棕色的」,那麼它顯示「og是棕色的」。如何解決這個問題?

+0

從正則表達式中刪除'[A-Z]'。 – mlask

+0

它必須在那裏,因爲在其他情況下,它將錯誤的地方分開。例如,如果句子包括短語「18。世紀」,它認爲18.是句子的結尾。 – user244902

回答

2

我認爲你需要A-Z是一個前瞻:

/[.!?]\s(?=[A-Z])/ 

寫着:標點和空格,如果隨後一個大寫字母。