sark9012
sark9012

Reputation: 5717

Check if string contains another string

In php is there a way i can check if a string includes a value. Say i had a string "this & that", could i check if that included "this". Thanks

UPDATED:

$u = username session

function myLeagues2($u)
{
     $q = "SELECT * FROM ".TBL_FIXTURES." WHERE `home_user` = '$u' GROUP BY `compname` ";
   return mysql_query($q, $this->connection);

}

That code returns if there is an exact match in the database. But i put two usernames together like "username1 & username2" and need to check if the username session is present in that field.

Is that a way to do this? It obviously woudn't equal it.

ANOTHER UPDATE:

If i use the like %username% in the sql, will it appear if its just the username. So rather than Luke & Matt being shown, if its just Luke will that show too? I dont want it to, i just want things that arent. Can you put != and LIKE so you only get similar matches but not identical?

Cheers

Upvotes: 1

Views: 2686

Answers (5)

JD Isaacks
JD Isaacks

Reputation: 57964

I like stristr the best because it is case insensitive.

Usage example from php.net:

$email = '[email protected]';
echo stristr($email, 'e'); // outputs [email protected]
echo stristr($email, 'e', true); // As of PHP 5.3.0, outputs US

based on your update

I think you want to use the like statement

SELECT * FROM table 
WHERE home_user LIKE "%username1%" OR home_user LIKE "%username2%"
GROUP BY compname

The % Is your wild card.

Upvotes: 1

vrillusions
vrillusions

Reputation: 139

<?php>
$string = 'this & that';
if (strpos($string, 'this') === FALSE) {
    echo 'this does not exist!';
} else {
    echo 'this exists!';
}
?>

What's noteworthy in the check is using a triple equal (forget the actual name). strpos is going to return 0 since it's in the 0th position. If it was only '== FALSE' it would see the 0 and interpret it as FALSE and would show 'this does not exist'. Aside from that this is about the most efficient way to check if something exists.

Upvotes: 0

Sarfraz
Sarfraz

Reputation: 382616

Use strstr or strpos functions. Although there are regex ways too but not worth for such trivial task there.

Using strstr

if (strstr('This & That', 'This') !== false)
{
   // found
}

Using strpos

if (strpos('This & That', 'This') !== false)
{
   // found
}

Upvotes: 7

Yanagi
Yanagi

Reputation: 43

Regular expressions can be checked with preg-match.

Upvotes: -2

Joe Martinez
Joe Martinez

Reputation: 854

preg_match('/this/','this & that');

This returns the number of matches, so if it's 0, there were no matches. It will however stop after 1 match.

Upvotes: -2

Related Questions