PHP字符串不包含

What I am trying to do is to display a message (1) if the current link does not contain the words "index" or "/?"

I found this to do the direct opposite:

$page = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($page, 'index.php') !== false xor strpos($page, '/?') !== false) {
    echo '1';
} else {
    echo '2';
}

This code displays "2" on pages where there is no "index" or "/?" in the link, but I need the opposite: display "1" where there is no "index" or "/?" in the link.

BTW I have tried all combinations: !strpos, TRUE, !==, but it doesn't seem to work for me. I need a way without the "else" in the code, otherwise I could just change up the echos.

$page = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($page, 'index.php') === false && strpos($page, '/?') === false) 
{
    echo"1";
}
else
{
    echo"2";
}

Should display 1 if there's no index.php or /? in $page

The condition in your if statement is

if( <<COND 1>> xor <<COND 2>> )

where, xor's feature is

return TRUE if either <<COND 1>> or <<COND 2>> is TRUE, but not both.

You should instead use this:

if( strpos($page, 'index.php') !== false OR strpos($page, '/?') !== false )

Check this page for more information about logical operators.

Try this :

$page = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

if (strpos($page, 'index.php') === false || strpos($page, '/?') === false) 

{

echo"1";

}

else

{

echo"2";

}
$page = 'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
if (strpos($page, '/?') === false && strpos($page, 'index.php') === false) 
{
  echo "1";
}
else
{
  echo "2";
}