2016-01-15 3 views
1

У меня есть простая задача, но не стала неприятной проблемой:Проверьте, если строка содержит набор символов в конце строки

$variable="This is some text***"; 

if (strpos($variable,'*') !== false) { 
    echo 'found *'; 
} else { 
    echo 'not found *'; 
} 

Но он найдет в тексте в * независимо от того, как много * есть.

Я хочу, чтобы это можно было найти только путем поиска указанной звезды *** (только трех звезд) * (одна звезда).

+0

если Запускается чем то, что будет у делать ?? Удалить?? или ничего? – devpro

+0

strpos ($ variable, '***')! == false – Deep

+0

devpro: это только фиктивный код, мой реальный код будет там просто захочет классифицировать текст с помощью звездочки, потому что strpos найдет, что есть совпадающий символ, не содержащий символ, это может сбить с толку. Глубокий: это может быть проблемой, если у меня есть много данных, содержащих * одиночные, ** двойные, *** тройные звезды, все данные будут сопоставлены, но я хотел, чтобы только указанная звезда была основана –

ответ

4

Чтобы сделать его еще более строгое соответствие, что вы только хотите его, чтобы соответствовать строке, которая содержит *** в конце строки, вы можете использовать регулярное выражение, так что,

if (preg_match('~[^*]\*{3}$~', $str)) { 
    print "Valid"; 
} 

Это говорит о том, когда строка имеет 3 звезды в конце, и перед этими 3 звездами нет звездочек, тогда это будет правдой. Измените 3 на 2 или 1 или на любое количество звезд, которые вы хотите сопоставить.

[^*] означает, что может быть персонаж, но это не может быть звезда, за которой следуют 3 звезды. \*{3} означает, что он будет соответствовать 3 звездам. Обратная косая черта - чтобы избежать звездочки для соответствия шаблону, а 3 - количество звезд.

Это может быть функция, как это:

function starMatch($str, $count) { 
    return (bool)preg_match('~[^*]\*{'.$count.'}$~', $str); 
} 

И называется так:

starMatch($str, 1); // matches * 
starMatch($str, 2); // matches ** 
starMatch($str, 3); // matches *** 
+0

Я задаю этот вопрос, потому что проблема заключается в том, , когда у вас много данных с sometext *, sometext **, sometext *** –

+0

Только что обновил мой пост – Clay

+0

Прохладный, это то, что я хочу, отличный ум mr.chris! –

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