2017-09-29 3 views
-1

문자열에 특정 단어가 들어 있는지 확인하고 싶었습니까? How do I check if a string contains a specific word?에 따르면 strpos() 기능을 사용할 수 있습니다. 내가 잘 작동 특정 단어 filters(10) 위의 기능을 확인해야하는 경우PHP에서 strpos()와 같은 함수의 조건을 사용하는 방법은 무엇입니까?

샘플 코드는 내가

if(strpos($value, 'filters(10)') === false){ 
    //Do something 
} else { 
    //Do Another Thing 
} 

을 썼다. 그러나 필터 단어가 포함 된 1 이상의 모든 번호를 확인해야합니다.

$value = 'bla bla bla bla' // Should return false 
$value = 'bla bla filters(1) bla bla' // Should return false 
$value = 'bla bla filters(5) bla bla' // Should return false 
$value = 'bla bla filters(10) bla bla' // Should return true 
$value = 'bla bla filters(15) bla bla' // Should return true 
$value = 'bla bla filters(20) bla bla' // Should return true 

어떻게 결과 위에 얻을 내 코드를 수정하는?

답변

1

여기서 특정 번호를 얻으려면 Regex을 사용할 수 있습니다. 추가 조건을 적용하십시오.

정규식 :filters\((\d+)\)

filters( 일치합니다 다음 숫자를 캡처 한 후 )

Try this code snippet here

preg_match("#filters\((\d+)\)#", $value, $matches); 
if(isset($matches[1]) && $matches[1]>10) 
{ 
    //do something on true 
} 
else 
{ 
    //do something on false 
} 
+1

감사합니다. 이것은 완벽하게 작동했습니다. 심지어 preg_match에 대한 많은 기사를 읽었지만 여전히 내 자신을 작성한 것과 같은 것을 함축 할 수는 없습니다 ... preg_match를 쉽게 작성하는 방법을 설명하는 링크를 제공 할 수 있습니까? 고마워요. –

+1

@IamtheMostStupidPerson 기본 작업은 https://regex101.com/에서 확인할 수 있습니다. –

0

당신은 filters()의 요소를 분석하고 10

와 비교할 수
if(($pos = strpos($value, 'filters(10)')) === false){ 
    if(intval(substr($value, $pos + strlen('filters('))) > 10) { 
    //Do something 
    } else {// do another thing} 
} else { 
    //Do Another Thing 
} 
관련 문제