PHP: определить точку или вопросительный знак в конце предложения - PullRequest
3 голосов
/ 04 марта 2010

Проблема: некоторые заголовки постов на моем сайте 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 ]

3 голосов
/ 04 марта 2010

Не проверено, но первое, что я заметил, вы используете =, что указывает на назначение, а не сравнение

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

Должно быть:

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

Так это выглядит так:

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

Надеюсь, это поможет.

2 голосов
/ 04 марта 2010

Просто предоставил исправленную версию ответа Джереми:

<?php $mytitle = get_the_title(); echo $mytitle; ?>
<?php $question = substr($mytitle, -1); if ($question != '?') { echo '.'; } ?>
0 голосов
/ 04 марта 2010

Ваш код может в конечном итоге добавить период, когда он уже был. Я предлагаю начать с этого:

<?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 () более привлекательной. Например, что если заголовок заканчивается запятой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...