0

I'm having issues checking if the string exist in array after splitting a single string into array by comma. it keeps returning false here my code. Can someone tell me what I'm doing wrong in my code?

<?php

$myString = "10.0.0.1 , IP: 10.0.0.2 Date: 05/07/2017 , IP: 10.0.0.3 Date: 05/07/2017";
$IPS = explode(' , ', $myString); 
$string = "10.0.0.2 Date: 05/07/2017";

foreach ($IPS as $IP) 
{
if(in_array($string, $IP))
    {
        die('YES');
    }
    else
    {
        die('NO'); // keeps returning no when the $string is in the array.

    }
}

?>
4
  • Your array is $IPS, not $IP. $IP is the string of each element in the array. Commented May 7, 2017 at 13:20
  • 1
    10.0.0.2 Date: 05/07/2017 doesn't exist. It's IP: 10.0.0.2 Date: 05/07/2017 that does (you missed the leading IP: ). in_array() matches the full values, not partials. Commented May 7, 2017 at 13:20
  • Do you compare two strings? Use strpos. Commented May 7, 2017 at 13:21
  • 1
    And as you die, you will never move after first element of array. Commented May 7, 2017 at 13:23

2 Answers 2

2

There are two error with your code. First $IP is string not array, so your is_array is not appropriate. Second when the first element not have $string the process with exit with die("NO"), then the remain code will not execute.

Check the live demo.

<?php

$myString = "10.0.0.1 , IP: 10.0.0.2 Date: 05/07/2017 , IP: 10.0.0.3 Date: 05/07/2017";
$IPS = explode(' , ', $myString); 
$string = "10.0.0.2 Date: 05/07/2017";

foreach ($IPS as $IP) 
{
if(strpos($IP, $string) !== FALSE)
    {
        die('YES');
    }
}
die('NO');
Sign up to request clarification or add additional context in comments.

Comments

1

Maybe you want to use strpos instead of looping through the array

<?php

$myString = "10.0.0.1 , IP: 10.0.0.2 Date: 05/07/2017 , IP: 10.0.0.3 Date: 05/07/2017";
$string = "10.0.0.2 Date: 05/07/2017";

if(strpos($myString, $string))
    {
        die('YES');
    }
    else
    {
        die('NO');
    } 

?>

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.