看不懂第一个字母

时间:2012-07-02 02:59:06

标签: php

我想添加一个函数,以便从my last question返回第一个字母是否为大写字母。

以下是代码:

<?php

function isCapital($string) {
   return $string = preg_match('/[A-Z]$/',$string{0});
}

$text = " Poetry. do you read poetry while flying? Many people find it relaxing to read on long flights. Poetry can be divided into several genres, or categories. ";
$sentences = explode(".", $text); $save = array();
foreach ($sentences as $sentence) {
   if (count(preg_split('/\s+/', $sentence)) > 6) {
      $save[] = $sentence. ".";
   }
}

if( count( $save) > 0) {
   foreach ($save as $nama){
      if (isCapital($nama)){
         print_r ($nama);
      }
   }
}
?>

结果应该是......

  

诗歌可以分为几种类型或类别。

......但它什么都没打印。我只需要包含超过6个单词的句子,并以大写字母开头。

2 个答案:

答案 0 :(得分:4)

当你执行explode()函数时,你在字符串的开头留下一个空格,这意味着$ string的最左边的字符永远不会是大写字母 - 它将是一个空格。我会将isCapital()函数更改为以下内容:

function isCapital($string) {
  return preg_match('/^\\s*[A-Z]/', $string) > 0;
}

答案 1 :(得分:1)

如果您愿意,您应该能够通过一个正则表达式完成所有这些:

preg_match_all('/((?=[A-Z])([^\s.!?]+\s+){5,}[^\s.!?]+[.!?])/', $string, $matches);

http://refiddle.com/2hz

或者,从字符类中删除!?,仅将.计为句子分隔符。