2016-05-15 1 views
0

Je cherche à obtenir un tableau d'ID de la chaîne suivante.Filtrer une chaîne dans PHP

[vc_gallery type="flexslider_fade" interval="3" images="3057,2141,234" onclick="link_image" custom_links_target="_self" img_size="large"]

Idéalement, je voudrais regarder cette chaîne et obtenir un tableau des valeurs INT dans les images. par exemple.

array("3057", "2141", "234");

+0

est le nombre de valeurs (images intérieures) variant? –

+0

Oui, il ne pouvait pas être présent, ou il pouvait y avoir n'importe quel nombre, délimité par des virgules. – absolute

Répondre

4

trouver la valeur d'images et d'exploser pour recevoir ensemble

$str = '[vc_gallery type="flexslider_fade" interval="3" images="3057,2141,234" onclick="link_image" custom_links_target="_self" img_size="large"]'; 

if (preg_match('/images\s*=\s*\"([^\"]+)\"/', $str, $m)) { 
    $res = explode(',', $m[1]); 
    print_r($res); 
} 
+0

Quel est l'avantage de faire cela VS stripos? – absolute

+0

il existe de nombreuses variantes. Vous pouvez utiliser des stripos. Peut utiliser exploser quelques fois – splash58

1

Une autre solution à l'aide explode et strpos fonctions:

$str = '[vc_gallery type="flexslider_fade" interval="3" images="3057,2141,234" onclick="link_image" custom_links_target="_self" img_size="large"]'; 

foreach (explode(" ", $str) as $v) { 
    if (strpos($v, "images=") === 0) { 
     $result = explode(",", explode('"', $v)[1]); 
     break; // avoids redundant iterations 
    } 
} 

print_r($result); 

La sortie:

Array 
(
    [0] => 3057 
    [1] => 2141 
    [2] => 234 
)