2010-07-09 4 views
0

J'ai deux tableaux avec des systèmes d'exploitation tels que Ubuntu et Windows et un autre avec des modèles de système comme Ubuntu 5.3 blah blah et Windows XP SP2 bla bla et j'ai besoin d'extraire le système d'exploitation tableau, mais ce n'est pas toujours au début, parfois c'est au milieu ou à la fin. Alors, comment pourrais-je faire une boucle dans un tableau et vérifier si elle est présente dans un autre tableau, si oui, dites-moi ce qu'est le système d'exploitation.rechercher une chaîne à partir d'un tableau dans un autre tableau

Exemple.

OS Liste

$os = array("Ubuntu", "Debian", "Gentoo", "Windows", "Fedora", "CentOS", "CloudLinux", "Slackware"); 

petite partie de la liste des modèles de système (ce sera dans un tableau)

Ubuntu 8.04 x64 LAMP Installation 
Ubuntu 8.04 x64 MySQL Installation 
Ubuntu 8.04 x64 PHP Installation 
x64 Installation Gentoo 
Basic Installation Ubuntu 8.03 

Ce qui aurait pour conséquence de me donner

Ubuntu 
Ubuntu 
Ubuntu 
Gentoo 
Ubuntu 

Merci

Répondre

0

Faire un regex sur la liste du système d'exploitation de faire correspondre chaque chaîne de modèle, puis sur chaque map chaîne de modèle avec cette regex:

function find_os($template) { 
    $os = array("Ubuntu", "Debian", "Gentoo", "Windows", "Fedora", "CentOS", "CloudLinux", "Slackware"); 
    preg_match('/(' . implode('|', $os) . ')/', $template, $matches); 
    return $matches[1]; 
} 

$results = array_map('find_os', $os_templates); 

array_map() applique la fonction find_os() à chaque chaîne de modèle, vous redonnant un tableau d'OS adapté » s.

0

Appelez votre première rangée (de chaînes arbitraires contenant éventuellement des noms de os) $foo et les termes de recherche $os, puis $result sera un tableau correspondant à $foo avec les noms de $os:

$result = array(); 
for($i = 0; $i < length($foo); $i++){ 
    // set the default result to be "no match" 
    $result[$i] = "no match"; 

    foreach($os as $name){ 
     if(stristr($foo[$i], $name)){ 
      // found a match, replace default value with 
      // the os' name and stop looking 
      $result[$i] = $name; 
      break; 
     } 
    } 
} 
Questions connexes