2016-12-26 2 views
0

J'ai une chaîne comme ceci: x320h220comment découper une chaîne en tableau à l'aide preg_split avec deux conditions

Je veux diviser cette chaîne en deux variables: $width et $height

Je peux le diviser en utilisant exploser mais je dois utiliser cette méthode deux fois pour obtenir ces valeurs, donc j'ai découvert que preg_split fera l'affaire. Mais je ne sais pas le Regex de diviser ces chaîne en deux variables (trouver si la chaîne contient x puis coupez le reste jusqu'à ce h puis couper le reste à nouveau dans une autre variable) qu'ils devraient être comme:

$width = 320; 
$height = 220; 

une suggestion?

Répondre

4

Utilisez preg_match(), et non preg_split(). Utilisez les groupes de capture pour extraire les deux nombres.

if (preg_match('/x(\d+)h(\d+)/', $string, $match)) { 
    $width = $match[1]; 
    $height = $match[2]; 
} 

Dans l'expression rationnelle:

  • x et h se correspondent littéralement
  • \d+ correspond à une séquence de chiffres
  • Mettre () autour de la séquence de chiffres crée un groupe de capture, de sorte que les portions appariées sont placés dans le tableau $match.
+0

@Barmar mec génial. Pouvez-vous expliquer l'expression rationnelle dans votre réponse? expliquez chacun d'entre eux si c'est possible pour vous –

+0

@Mohammad Je l'ai ajouté, mais il ne m'a pas semblé nécessaire d'entrer dans les détails pour une telle expression rationnelle. Il n'utilise rien d'avancé, donc même un débutant de regexp devrait le comprendre. Vous devriez aller à www.regular-expression.info et lire le tutoriel. – Barmar

+0

@Barmar Merci, je vais vérifier. –

0

utilisent ce $ size = preg_split("/[xh]/", "x320h220", -1, PREG_SPLIT_NO_EMPTY)

espère que cela fonctionnera pour vous :)