2016-10-17 2 views
-3

Я хочу найти 4 строки. Просто 4, а не 44 или 14 или 4444 ...php найти символ в строке, но только персонаж

Я не могу использовать strpos, потому что он возвращает 0, когда найдено 4, а также когда найдено 44 или когда найдено 444444.

Какую функцию я должен использовать?

Благодаря

+0

Он возвращает ноль, потому что ему найдено '4' в колонке' 0' – RiggsFolly

+0

@FrayneKonok Я не тот, кто делает угадывание, вы – RiggsFolly

+0

Добро пожаловать в SO. Пожалуйста, посмотрите [тур] (http://stackoverflow.com/tour). Вы также можете проверить [Какие темы я могу задать] (http://stackoverflow.com/help/on-topic) и [Как задать хороший вопрос] (http://stackoverflow.com/help/ как задавать вопросы), и [Идеальный вопрос] (http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/) и как создать [Минимальный, Полный и Подтверждаемый пример] (http://stackoverflow.com/help/mcve). Отправьте код, который вы попробовали, и полученные вами ошибки. Будьте как можно более конкретными, так как это приведет к лучшим ответам. –

ответ

0

Использование preg_match() с negative lookbehind and negative lookahead:

preg_match('/((?<!4)4(?!4))/', $string, $m); 
if ($m && count($m) == 2) { 
    // matched "only one 4" 
} 
+0

Я думаю, что это не просто догадка, это ваш ответ, и вы понимаете, чего OP хочет от этого вопроса. –

+1

@FrayneKonok, всегда есть шанс не понять OP правильно. Привет, возможно, более конкретный, но я думаю, что понял, что он имел в виду. –

+0

Я перефразирую это. Если я использую тестовую строку '$ string = '444or4444or44or24';' она найдет 'просто 4' на последнем' 24' – RiggsFolly

1

Попробуйте это, используйте preg_match_all

$str = 'Just 44 4 test 444'; 
preg_match_all('!\d+!', $str, $matches); 
// print_r($matches); 


if (in_array("4", $matches[0])){ 
    echo "Match found"; 
    } 
else 
{ 
    echo "Match not found"; 
} 

DEMO

+0

Я не могу сломать этот! UV – RiggsFolly

+0

@miguelmas Проверить этот ответ кажется нерушимым – RiggsFolly