2017-10-07 15 views
-1
$str = "SC - ESV Parndorf 2 - 5 SV Horn"; 
$str4 = explode(" - ", $str,2); 
$str5=$str4[0];  
$str6 = explode(" ", $str5); 
$Num=end($str6);   
$str7=$str4[1];  
$str8 = explode(" ", $str7); 
$Num1 = $str8[0]; 

Impossible d'obtenir le numéro 2 et 5 hors de la chaîne si j'ai deux "-".Impossible de diviser en utilisant éclatant contenant deux trait d'union

+0

Bienvenue sur stackoverflow.com! Veuillez lire [Comment demander] (https://stackoverflow.com/questions/how-to-ask), [Comment créer un exemple minimal, complet et vérifiable] (https://stackoverflow.com/help/mcve), puis modifiez votre question en conséquence. Vous pouvez également consulter la visite du site pour en savoir plus sur la façon dont les choses fonctionnent ici. – wp78de

+0

Je veux extraire seulement des partitions. –

+0

La réponse a été utile mais ...... "Merci pour les commentaires! Les suffrages exprimés par ceux qui ont moins de 15 points de réputation sont enregistrés, mais ne modifient pas le résultat affiché publiquement." –

Répondre

0

Je recommande d'utiliser une expression régulière à la place, par ex. (^.+) (\d+) - (\d+) (.+$)
avec preg_match_all() comme ceci:

$re = '/(^.+) (\d+) - (\d+) (.+$)/'; 
$str = 'SC - ESV Parndorf 2 - 5 SV Horn'; 
preg_match_all($re, $str, $matches); 
foreach ($matches as $match) { 
    echo $match[0] . "\n"; 
} 

Selon votre question, vous êtes plus intéressés à capturer le groupe 2 et 3, resp. $matches[2][0] et $matches[3][0].

+0

La différence entre les deux fonctions suggérées est la suivante: 'preg_match' arrête de s'occuper de la première correspondance. 'preg_match_all' continue à regarder jusqu'à ce qu'il termine le traitement de la chaîne entière. Si vous avez une seule ligne avec une seule correspondance, preg_match est suffisant, sinon preg_match_all est meilleur. http://php.net/manual/fr/function.preg-match-all.php – wp78de

0

Pour un tel travail, vous feriez mieux d'utiliser preg_match:

$re = '/(\d+)\s+-\s+(\d+)/'; 
$str = 'SC - ESV Parndorf 2 - 5 SV Horn'; 
preg_match($re, $str, $matches); 
print_r($matches); 

Explication:

/   : regex delimiter 
    (\d+) : group 1, 1 or more digits 
    \s+-\s+ : a dash between some spaces 
    (\d+) : group 2, 1 or more digits 
/   : regex delimiter 

Sortie:

Array 
(
    [0] => 2 - 5 
    [1] => 2 
    [2] => 5 
) 
+0

@ wp78de: Pas vraiment, vous utilisez preg_match_all et vous capturez trop de groupes – Toto