2017-05-25 6 views
0

Um die gegebenen Notation aufzuspalten verwenden, habe ich zunächstWie teilen Sie die reguläre Ausdrücke

list($pdf_platform_size, $pdf_capacity ,$pdf_accuracy) = split("[a-z-][a-z-]", $pdf_select_specification); 

Wenn der String sagen war 6 x 3m - 20t - 2kg es verwendet, um die gegebenen zu trennen in 6x3m für $ pdf_platform_size, 20t für $ pdf_capacity und 2kg für $ pdf_accuracy.

Aber jetzt, als ich auf PHP 7 aktualisiert, und Split ist veraltet. Unter Verwendung der gleichen für preg_split() scheint nicht zu funktionieren. Ich versuchte list($a,$b,$c) = preg_split("/[a-z-][a-z-]/", $x);

wo $ x 6 x 3m - 20t - 2kg

bin aber nicht die gewünschte result.Looking für etwas Hilfe hier

+0

In Ihrer ersten Codezeile fehlen die REGEX-Begrenzer '/' und '/' on 'preg_split()'. – Utkanos

+0

Aber nicht in der zweiten ... @Utkanos – revo

+0

Ja, aber was sollten wir davon ausgehen, dass Sie verwenden? – Utkanos

Antwort

0

Keine Notwendigkeit für reguläre Ausdrücke bekommen, wenn Sie Splitting auf einem - allein. Verwenden Sie explode statt:

[$a, $b, $c] = explode('-', '6x3m-20t-2kg'); 
echo $a; // 6x3m 

Hinweis: Stenografie Array Destrukturierung kam mit PHP 7,1

+0

Problem gelöst.Vielen Dank – Balls

0

können Sie verwenden explode:

list($pdf_platform_size, $pdf_capacity ,$pdf_accuracy) = array_map('trim', explode(' - ', $pdf_select_specification)); 

Wenn Sie die platform_size wollen, ohne diese Räume nutzen trim nach Das.

+0

@Toto danke, Mann, Fixed! Nur Code in einem meiner Helfer verwendet und ich habe das vergessen. – calexandre

0

Wie bereits erwähnt Sie explode verwenden können, aber auch preg_split

$x = '6 x 3m - 20t - 2kg'; 
list($a,$b,$c) = preg_split("/[-]/", $x); 

Wenn der Raum vorhanden sind, nutzen könnten Sie trim() das Ergebnis wünschen können

0

Wenn Sie Werte wollen Sie es preg_match_all mit extrahieren

$x = '6 x 3m - 20t - 2kg'; 
preg_match_all('/(\d)+[ ]*x[ ]*(\d)+m[ ]*-[ ]*(\d)+t[ ]*-[ ]*(\d)kg/', $x, $dump); 
var_dump($dump);