2011-04-20 5 views
0

p =을 어떻게 유지하고 OR /20을 추가 할 수 있습니까? 두 문자열을 모두 확인하고 싶습니다.스트리퍼에 if 문을 추가하려면 어떻게해야합니까?

<?php if (false==stripos(get_permalink($post->ID), 'p=')) { ?> 
+1

이 BTW POS는 0 – PeeHaa

+0

더 나은 아직, 단지 모두 stripos''피할 반환 할 수 있습니다 잘못된 값의 원인 STR (I)를 확인하기 위해 === 연산자를 사용합니다. PHP는 ['stristr'] (http://php.net/stristr)이라는 멋진 함수를 가지고 있습니다.이 함수는 부등식 검증을 필요로하지 않습니다. – mario

+0

@mario : strpos가 더 빠르며 더 적은 메모리를 사용한다고 생각했습니다. – PeeHaa

답변

1

단일 stripos() 전화와 문자열의 두 부분에 대한 테스트 할 수 없습니다 : 당신은 두 번 stripos()를 호출해야합니다.

$link = get_permalink($post->ID); 
if (stripos($link, 'p=')!==false && stripos($link, '/20')!==false) { 
    // the link contains both p= AND /20 
} 

나 :

정확히 (하지 않도록 정말 undertand에 질문)을 달성하려는 작업에 따라 && 또는 ||와 두를 결합합니다

$link = get_permalink($post->ID); 
if (stripos($link, 'p=')!==false || stripos($link, '/20')!==false) { 
    // the link contains p= OR (inclusive) /20 
} 


옆줄로 === 또는 !==을 사용해야합니다. stripos()은 0123을 반환 할 수 있습니다.또는 false - 같은 의미는 아닙니다.

+0

당신은'if (false == stripos (get_permalink ($ post-> ID), 'p ='))와 같은 뜻입니다. if (false == stripos (get_permalink ($ post-> ID), '/ 20'))'? – EnexoOnoma

+0

@Punkis 아니, 나는 한가지 조건으로 두 개의 stripos() 호출을 결합하는 것을 의미한다 - 나는 나의 대답을 예제로 편집했다. –

+0

나는 그것을 작동시킬 수 없다는 것을 모른다. 나는 단지 p =가 있었을 때 일하고 있었다. – EnexoOnoma

0

당신은 두 번 전화를해야 :

if( false===stripos(get_permalink($post->ID), 'p=') || 
    false===stripos(get_permalink($post->ID), '/20') 
) { 
관련 문제