在Strpos中排除多个网址-为什么不起作用?

时间:2019-05-29 10:35:56

标签: strpos nofollow

我正在尝试使用strpos在添加nofollow规则时排除多个url,但它仅适用于1个url,但我无法排除所有需要包含的url。

这是我尝试过的代码:

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );
function my_custom_bbpress_nofollow( $nofollow, $href ) {

if ( strpos( $href, 'https://www.examplelink1.com' ) === false && strpos( $href, 'https://www.examplelink2.com' ) === false && strpos( $href, 'https://www.examplelink3.com' ) === false && strpos( $href, 'https://examplelink4.to' ) === false) {
       $nofollow = '';
   }

   return $nofollow;
}

我也尝试过用== false!== false进行尝试,但这些方法似乎无效。

这个确实可以,但是它只排除了一个域,我需要总共排除5个。

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );
function my_custom_bbpress_nofollow( $nofollow, $href ) {

    if ( strpos( $href, 'http://your-domain.here' ) !== false ) {
        $nofollow = 'rel="dofollow"';
    }

    return $nofollow;
}

包含多个网址的正确strpos语法是什么

https://www.examplelink1.com AND/OR
https://www.examplelink2.com AND/OR
https://www.examplelink3.com AND/OR
https://www.examplelink4.com

2 个答案:

答案 0 :(得分:0)

我相信您想使用|| (OR),而不是if语句中的&&(AND)。 您的$ href绝不会匹配所有条件,因此使用AND绝不会返回true。使用OR,如果发现其中任何一个,则告诉它设置$ nofollow =''。

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );
function my_custom_bbpress_nofollow( $nofollow, $href ) {

if ( strpos( $href, 'https://www.examplelink1.com' ) === false || strpos( $href, 'https://www.examplelink2.com' ) === false || strpos( $href, 'https://www.examplelink3.com' ) === false || strpos( $href, 'https://examplelink4.to' ) === false) {
   $nofollow = '';
}

return $nofollow;
}

编辑:实际上,我不太确定您要做什么。您的2个示例的代码相反,这很令人困惑。如果您希望在href等于5个网址中的任何一个时返回“ rel =“ nofollow””,请尝试以下方法:

 add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );

 function my_custom_bbpress_nofollow( $nofollow, $href ) {
     $nofollow = '';
     if ( strpos( $href, 'http://your-domain.here' ) !== false || 
          strpos( $href, 'https://www.examplelink1.com' ) !== false || 
          strpos( $href, 'https://www.examplelink2.com' ) !== false || 
          strpos( $href, 'https://www.examplelink3.com' ) !== false || 
          strpos( $href, 'https://www.examplelink4.com' ) !== false 
    ) {
         $nofollow = 'rel="dofollow"';
     }

    return $nofollow;
 }

您还应该在函数开头定义$ nofollow,否则如果条件不匹配,则不会返回任何内容。

答案 1 :(得分:0)

对不起,我希望它DOFOLLOW这5个链接,NOFOLLOW其他所有内容。

add_filter( 'custom_bbpress_nofollow', 'my_custom_bbpress_nofollow', 15, 2 );

function my_custom_bbpress_nofollow( $nofollow, $href ) {
$nofollow = '';
if ( strpos( $href, 'https://www.link1.com' )!== false || 
     strpos( $href, 'https://www.link2.com' ) !== false || 
     strpos( $href, 'https://www.link3.com' ) !== false ||
     strpos( $href, 'https://www.link4.com' ) === false
    ) {
   $nofollow = 'rel="nofollow" target="_blank"';
}

return $nofollow;
}