Trouver si une valeur de tableau apparaît dans une chaîne. (Type d'une in_array inverse?)

StackOverflow https://stackoverflow.com/questions/8364657

  •  27-10-2019
  •  | 
  •  

Question

Sur un site, je travaille sur il y a une subheadline qui devrait être montré que si les informations ne sont pas déjà indiqué dans le titre principal. Le titre principal est une chaîne arbitraire, alors que le subheadline est créé programatically. Le subheadline est généré à partir du contenu d'un tableau multidimensionnel (dont le contenu sont également utilisés pour d'autres parties de la page.)

J'ai utilisé l'exemple de PHP foreach pour percer à travers le tableau (seulement à moitié comprendre comment il fonctionnait), puis a essayé strpos pour voir si les valeurs du tableau étaient dans la chaîne de titre.

Malheureusement, il ne fonctionne pas. Il y a une forte chance que je fait une erreur stupide dans la façon dont je pensais qu'il est censé fonctionner. Ou que la variable qui indique le site pour cacher la subhead ( « Hider ») est remis à zéro en permanence à « non » à la suite des autres valeurs du tableau.

foreach ($arr_info as $i1 => $n1) {    
    foreach ($n1 as $i2 => $n2) {     
        foreach ($n2 as $i3 => $n3) {
            $pos = strpos($headline, $n3);
            if ($pos === false) {
                $hider="no";
            } else {
                $hider="yes";
            }
        }
    }

Toutes les idées? Grandement apprécie l'aide.

Était-ce utile?

La solution

Ajoutez à ceci:

$hider="yes";
break;

it helps

Autres conseils

Je pense qu'une approche plus propre serait de construire une expression régulière sur des valeurs et de voir si elle correspond à votre chaîne:

$values = array();
array_walk_recursive($arr_info, function($k){$GLOBALS['values'][] = preg_quote($k);});
$hider = preg_match('/(' . implode($values, '|') . ')/', $headline) ? 'yes' : 'no';
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top