2011-04-20 124 views
0

我该如何保留p =并在其上面添加OR /20?我的意思是我想检查两个字符串。如何在stripos中添加if语句?

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

BTW使用===运算符来检查错误值的原因STR(I)POS还可以返回0 – PeeHaa 2011-04-20 21:37:12

+0

更重要的是,只是避免'完全stripos'。 PHP有一个叫''stristr'](http://php.net/stristr)的可爱函数,它不需要布尔平等探测。 – mario 2011-04-20 21:44:04

+0

@mario:我认为strpos速度更快,内存使用更少 – PeeHaa 2011-04-20 21:49:45

回答

1

你不能用一个单一的通话stripos()串的两个部分测试:你必须调用stripos()两次。

取决于你究竟想达到(不知道我真的undertand问题),你会&&||结合这两个:

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

或:

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


作为旁注:您应该使用===!==,因为stripos()可以返回0false - 而那些意思不一样。

+0

你的意思就像'if(false == stripos(get_permalink($ post-> ID),'p ='))|| if(false == stripos(get_permalink($ post-> ID),'/ 20'))'? – EnexoOnoma 2011-04-20 21:36:53

+0

@Punkis不,我的意思是在一个条件下将两个stripos()调用相结合 - 我用一个示例编辑了我的答案。 – 2011-04-20 21:38:50

+0

我不知道我不能得到它的工作..这是工作时,我只有P =虽然 – EnexoOnoma 2011-04-20 21:45:28

0

你必须两次调用它:

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