Skip to content
Advertisement

How do I echo the values in the array that matched in the given string

I need help with my PHP code.

I want to echo which string from the array $finds matched in the given string.

For example, if I input “https://amazon.com/” the result will be:

!Found - [ https://amazon.com/ ] - [ 2 keywords was found in the site. [Which word / words from $finds was found.] ]

Here is my actual code :

$ii = [
'cookie' => mt_rand().'.txt'

];

if (!is_dir($pathhhhhh)) {  
    mkdir($pathhhhhh, 0777, true);
}
$d1 = getcwd();
$d = str_replace('\', '/', $d1);

$g = curl_init();
curl_setopt($g, CURLOPT_COOKIEJAR, "".$d."/COOKIE/".$ii['cookie']."");
curl_setopt($g, CURLOPT_COOKIEFILE, "".$d."/COOKIE/".$ii['cookie']."");
curl_setopt($g, CURLOPT_URL, ''.$hehe.'');
curl_setopt($g, CURLOPT_HTTPGET, 1);
curl_setopt($g, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($g, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($g, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($g, CURLOPT_SSL_VERIFYHOST, 0);
$g1 = curl_exec($g);
$string = html_entity_decode(htmlentities($g1));
$finds = ['shop'];
$findCount = 0;


foreach ($finds as $find) {
    if ( stripos($string, $find) !== false ) $findCount++;
}

if ($findCount != 0){
    if($findCount > 1){
        $ident = 'Keywords';
    }else{
        $ident = 'Keyword';
    }
    $res = "!Found - [$hehe] - [ $findCount $ident was found in the site. ]";
    echo "<font size='4' color='#39ff14'><tt><i>$res</tt></i></font><br>";

} 
elseif (empty($string)) {
    $res = "!Error - [$hehe] - [ An error occurred during the scraping. ]";
    echo "<font size='4' color='#ff073a'><tt><i>$res</tt></i></font><br>";
} 
else {
    $res = "!Error - [$hehe] - [ No Match Found ]";
    echo "<font size='4' color='#ff073a'><tt><i>$res</tt></i></font><br>"; 
}

Advertisement

Answer

You could add the $find in an array, and use implode() to output these words.

$hehe = 'example.com';
$string = "A sample sentence with words like shop.";

$finds = ['shop'];
$founds = [];

foreach ($finds as $find) {
    if ( stripos($string, $find) !== false ) {
        $founds[] = $find;
    }
}



if (!empty($founds)) {
    $findCount = count($founds);
    if ($findCount > 1){
        $ident = 'Keywords';
    }
    else {
        $ident = 'Keyword';
    }
    $words = implode(', ', $founds);
    $res = "!Found - [$hehe] - [ $findCount $ident was found in the site : $words]";
    echo "<font size='4' color='#39ff14'><tt><i>$res</tt></i></font><br>";
} 

This will output :

!Found - [example.com] - [ 1 Keyword was found in the site. shop]
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement