2012-04-07 13 views
0

Also sagen wir, ich habe eine Zeichenfolge wie so.finde ganze Zahlen verbunden mit - in string php

$pizza = 1,2,3,5-4,7; 

und was ich will aus ihm heraus zu bekommen, ist die 5-7 aus diesem Satz aber, dass 5-7 könnte jede Combo sein, sagen 6-9 oder 10-1 und dies mehrmals auftreten.

Wie

$pizza=1-4,2,3-1,5-4,7; 

Wie würde ich mich über das gehen?

Ich verstehe, wie man die Kommas durch Explodieren und implodieren loswerde, aber dann weiß ich nicht, wie man die gestrichelten Zahlen und die Position dieser Zahlen in der Zeichenfolge erhält.

Antwort

1
preg_match_all("/(\d\-\d)/", $myString, $results); 

das tun sollte es

0

Sie können "erweitern" reicht in ihre einzelnen Zahlen mit diesem:

$pizza = preg_replace_callback(
    "((\d+)-(\d+))", 
    function($m) { 
     return implode(",",range(min($m[1],$m[2]),max($m[1],$m[2]))); 
    }, 
    $pizza); 

So zum Beispiel, wenn Sie in 1,2,3,7-10,12 setzen, wird der Code zur Folge 1,2,3,7,8,9,10,12 . Dann können Sie es einfach in Ihren bereits bekannten explode Code eingeben und die einzelnen Nummern bekommen.

Ich denke, das ist, was Sie verlangen.