2014-10-30 3 views
2

Привет, мне нужно искать две строки в одной строке. НапримерКак искать две строки в одной строке?

$string = "The quick brown fox jumped over a lazy cat"; 
if($string contains both brown and lazy){ 
    then execute my code 
} 

Я попытался pregmatch, как это,

if(preg_match("/(brown|lazy)/i", $string)){ 
    execute my code 
} 

Но входит ли петля, если один из них присутствует в строке. Но я хочу, чтобы он ввел условие if только в том случае, если обе строки присутствуют в родительской строке. Как я могу это достичь.

NoTE: Мне не нужна петля над строкой. (Так же, как explode строку и foreach над взорванного массива и поиска с помощью strpos)

+0

'$ string содержит как коричневый, так и ленивый. Ключевое слово здесь:' and'. – Shomz

+0

'$ regex ="/(коричневый) [^.] * (Ленивый)/i ";' намного короче. –

+0

Если вы искали способ сделать это в регулярном выражении, это сообщение объясняет, как получить эффект «и» с помощью регулярного выражения: http://stackoverflow.com/questions/469913/regular-expressions-is-there -an-and-operator – Tim

ответ

5

Попробуйте как

if(preg_match("/(brown)/i", $string) && preg_match("/(lazy)/i", $string)){ 
    execute my code 
} 

Ён также можно попробовать с strpos как

if(strpos($string, 'brown') >= 0 && strpos($string, 'lazy') >= 0){ 
    execute my code 
} 
+0

Оба ваших примера strpos были неправильными: он никогда не вернет TRUE, а '> 0' потерпит неудачу, если позиция равна 0 (начало строки). – Shomz

+0

Извините за rollback.It будет работать с '> 0' – Gautam3164

+0

@Shomz да, я также узнал, что. Спасибо за предложение – Gautam3164

3

позднего ответа, в случае, если хотели бы проверить точное совпадение на обоих словах:

$regex= "/\b(brown)\b[^.]*\b(lazy)\b/i"; 

$string = "The quick brown fox jumped over a lazy cat"; 

if(preg_match($regex, $string)) 

{ 
    echo 'True'; 
} else { 
    echo 'False'; 
} 

  • Или замените его $regex = "/(brown)[^.]*(lazy)/i";, если вы не хотите, чтобы проверить точное совпадение, что намного короче метод.
+1

Спасибо @Fred -ii- за вашу заботу :) –

+1

@BlankHead Добро пожаловать. Я тестировал в то время и находился вне этой страницы, делая это, что объясняет мой поздний ответ. Если это ваш +1, спасибо :) –

+0

Эй. Не упоминайте пожалуйста. :) –

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