2015-06-10 2 views
1

Я пытаюсь проверить, содержит ли моя строка { и : и }, если это так, возвращает true, но я здесь что-то не хватает.Возможна ли множественная последовательность?

$string = "{12345:98765}"; 

if(strpos($string,'{*:*}')== true) { 

echo "string is good"; 

} 

Идеи?

+0

StrPos не принимает регулярные выражения. Как насчет матча –

ответ

2

Как насчет:

if (preg_match('/\{.*?:.*?\}/', $string)) { 
    echo 'string is good.'; 
} 

Где:

/ 
    \{ : openning curly brace (must be escaped, it' a special char in regex) 
    .*? : 0 or more any char (non greeddy) 
    :  : semicolon 
    .*? : 0 or more any char (non greeddy) 
    \} : closing curly brace (must be escaped, it' a special char in regex) 
/
2
if (strpos($string,'{') !== false && strpos($string,'}') !== false) { 
    echo "string is good"; 
} 
2

strpos не принимает регулярные выражения, и это не позволяет вам искать для нескольких игл в одном заявлении.

Кроме того, ваше регулярное выражение не будет работать. Это должно выглядеть примерно так:

{\d+:\d+} 

То есть, если вы имеете дело только с цифрами. Замените \d на \w, если это могут быть буквы ИЛИ цифры или заменить его на ., если это может быть любой символ. + означает один или несколько символов. Замените его *, если может быть ноль или более символов, окруженных фигурными скобками.

if(preg_match('/{\d+:\d+}/', $string)) { 
    echo 'string is good.'; 
} 
Смежные вопросы