2013-07-02 5 views
1

Как проверить, является ли последний символ в строке вопросительным знаком (?) С использованием php?Проверьте, является ли последний символ вопросительным знаком

Это моя нынешняя попытка, но это не похоже на работу, к сожалению:

if (substr(strrev(trim($link)),0,0) != "?") 
{ 

} 
+1

За что его стоит, я добавил ответ, объясняющий * почему то, что вы написали не делать то, что вы ожидали * , и объясняет, как вы можете добиться результата более простым способом. –

ответ

9
if (substr(rtrim($link), -1) != "?") { 
    // Do stuff 
} 

Давать отрицательную start значение substr() делает его считать с конца, а не с самого начала.

+0

+1, я опоздал на 12 секунд –

+0

избит на минуту! –

+1

Интересно, может ли кто-нибудь придумать лучшее решение, но я не задерживаю дыхание ... Это довольно оптимально, я думаю. Будет ли!! == 'лучше? – Floris

1

В коде есть две основные ошибки. Во-первых, сравнение неверно. Вы спрашиваете, является ли последний символ не вопросительным знаком. Кроме того, вы получаете подстроку длиной 0, так что всегда будет не равно вопросительному знаку, так как '' != '?' всегда True.

С исходного кода вы можете изменить его к этому:

if (substr(strrev(trim($link)),0,1) == "?") 
{ 
    //Do things 
} 

В качестве альтернативы, это немного короче и просто подсчитывает индекс для подстроки с конца:

$link = "Say what?"; 
if (substr($link,-1) == "?") 
{ 
echo "You heard me!"; 
} 
+0

Длина по умолчанию для 'substr' до конца строки, а не 1. – Barmar

+1

@Barmar Eeek, мой плохой. Все исправлено. –

+0

спасибо за советы! –

0

это PHP, всегда есть альтернативы:

$link='123?'; 
if (end(str_split($link)) == "?"){ 
    echo 'YES'; 
} 
0

Самый простой способ:

if (substr("question?", -1) == '?') 

Иногда я проверяю и другие знаки, такие как ?! или .:

if (in_array(substr("question?", -1), ['?', '!' , '.'])) 
Смежные вопросы