PHP: Bir cümlenin sonuna nokta veya soru işareti belirlemek

3 Cevap php

Sorun: yazı başlığı bir soru işareti ile biter yani benim WordPress sitede sonrası bazı başlıklar, sorular vardır. Ve ben en son mesaj listeleri oluşturmak sonrası sorguları var. Yani doğru benim noktalama tutacak php biraz anlamaya çalışıyorum.

Bir başlığın son karakter bir soru işareti olup olmadığını belirlemek ve bir dönem yankı değil iyi bir yolu nedir? Yazı başlığı bir soru değil Ve eğer, bir dönem yankı.

Bu bir wordpress sorguda unvanını almak ve sonra başlık bir soru olup olmadığını belirlemek için kullanmak ne çalışıyorum, ancak süresini yazmıyor.

Basit bir şey olmalı ben burada yanlış var:

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

Edit 3/03/10

Bu şimdi çalışıyor:

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

3 Cevap

Sadece Jeremy'nin cevabın sabit bir sürümünü sağlamak:

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

Denenmemiş, ama ben fark ilk şey atama değil, karşılaştırma gösterir = kullanıyor olmamız.

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

Olmalıdır:

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

Yani gibi görünüyor:

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

Umut olur.

Zaten kimse yoktu zaman kodu bir süre ekleme bitebileceğini. Ben bu ile başlayan öneririz:

<?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());
?>

Gerektiği gibi Sonra Patlak () işlevi meraklısı yapabilirsiniz. Örneğin, bir başlık, bir virgül ne olursa biter?