2015-03-26 3 views
2

У меня есть одна строка, как показано ниже.Найти последнего символа строки php

$string = "2346#$ABSC$%#@#234567"; 

Теперь я хочу, последний символ из этой строки, которая не является числовым или специальный символ, он должен быть только А-а до Z-Z.

Значит, мне нужна только «C» из этой строки.

У меня попробовать эту формулу:

substr($string, -1); 
+0

'эхо подстрока (preg_replace ('/ [^ AZ]/я', '', $ строка), -1);' –

+0

И если вы получите сообщение об ошибке 'Не определено переменная: ABSC in ... 'потому что ваша строка' "2346 # $ ABSC $% # @ # 234567" 'содержит' $ ABSC' и завернута в двойные кавычки, то есть будет пытаться интерполировать переменную с именем '$ ABSC ' –

ответ

2

Вы должны смотреть в регулярные выражения, используя нечто вроде preg_match()

выражение, как это будет соответствовать:

/([a-z])[^a-z]*$/i 

Это означает:

  • ([a-z]) Захват символ аз (i на конец делает его нечувствительным к регистру)
  • [^a-z]*$ затем 0 или более нет n символов a-z до конца строки

См. an example.

+2

[Это будет соответствовать первому совпадению, а не последнему] (https://regex101.com/r/lF9vR0/1). ['/ ([a-z]) [^ a-z] + $/i' лучше, я считаю] (https://regex101.com/r/lF9vR0/2). – h2ooooooo

+1

@ h2ooooooo Aiaiai, вы правы, я забыл добавить это. Вместо этого я использовал '*', так как в конце может быть и не-буква. – jeroen

0

Это должно работать для вас:

(. Здесь я просто заменить все ожидают a-zA-Z с пустой строкой После этого я просто получить доступ к последним символом)

<?php 

    $string = '2346#$ABSC$%#@#234567'; 
    $string = preg_replace("/[^a-zA-Z]/", "", $string); 
    echo $string[strlen($string)-1]; 

?> 

выход:

C 
0

Правильное регулярное выражение: ([a-z])[^a-z]*$

Смежные вопросы