PHP:确定句子末尾的句号或问号

时间:2010-03-03 22:05:40

标签: php wordpress

问题:我的WordPress网站上的一些帖子标题是问题,即帖子标题以问号结尾。我有发布查询,生成最新帖子的列表。所以我试图找出一些可以保持标点符号正确的PHP。

确定标题的最后一个字符是否为问号并且不回显期间的好方法是什么?如果帖子标题不是问题,请回复一段时间。

这就是我想用来获取wordpress查询中的标题,然后确定标题是否是一个问题,但它不打印期间。

一定是简单的我在这里错了:

<?php $mytitle = get_the_title(); echo $mytitle; ?>
<?php $question = substr($mytitle, -1); if (!$question = '?'): echo '.'; endif; ?>

编辑3/03/10

这现在有效:

<?php $mytitle = get_the_title(); echo $mytitle; ?>
<?php $question = substr($mytitle, -1); if ($question != '?') { echo '.'; } ?>

3 个答案:

答案 0 :(得分:3)

未经测试,但我注意到的第一件事是你正在使用=表示分配,而不是比较。

if (!$question = '?'): echo '.'; endif; 

应该是:

if (!$question == '?'): echo '.'; endif; 

所以看起来像:

<?php $mytitle = get_the_title(); echo $mytitle; ?>
<?php $question = substr($mytitle, -1); if (!$question == '?'): echo '.'; endif; ?>

希望有所帮助。

答案 1 :(得分:2)

只提供Jeremy答案的固定版本:

<?php $mytitle = get_the_title(); echo $mytitle; ?>
<?php $question = substr($mytitle, -1); if ($question != '?') { echo '.'; } ?>

答案 2 :(得分:0)

您的代码最终可能会在已有代码的时候附加一段时间。我建议从这开始:

<?php

# add a period if it doesn't already end with punctuation.
function punc($s)
{
  if(preg_match("/[\.\?\,]$/", $s)) return $s;
  return $s . ".";
}

echo punc(get_the_title());
?>

然后,您可以根据需要使punc()函数更加精彩。例如,如果标题以逗号结尾怎么办?