2017-09-21 1 views
1

Ich versuche eine Regex in PHP zu definieren, um Wörter zu extrahieren, aber ich war nicht erfolgreich ... Meine Zeichenfolge ist immer in diesem Format: "toto = on test = on azerty = on gogo = on " was ich tun möchte, ist in einem Array die Werte toto, test, azerty und gogo zu bekommen. Kann jemand helfen?Regex zu extrahieren, was precedes gleich

das, was ich bisher versucht hat: /([^\s]|[w]*?=)/

+1

Nun, 'W' passt nur 'W'. '[^ \ s]' stimmt mit jedem Zeichen überein, das kein Leerzeichen ist. Warum haben Sie erwartet, dass dieses Muster funktioniert? –

Antwort

2

Es einfach ist

preg_match_all("/(\w*)=/", "toto=on test=on azerty=on gogo=on", $output_array)[1]; 

es alles Wort, bevor bekommen " = ", die Klammern dienen zum Definieren einer Gruppe und setzen den Schlüssel" 1 " „\ W“ für einen Buchstaben und „*“ ist für „viele“

oder Sie können, dass und wie die

preg_match_all("/(\w*)=on/", "toto=on test=on azerty=on gogo=on", $output_array)[1]; 

So werden nur die Parameter „on“ erhalten, verwenden verbessern, wenn Sie " toto = im Test = auf azerty = auf gogo = auf toff = off“, die Zeichenfolge "wird toff" tun sie nicht erscheinen

Ich mag http://www.phpliveregex.com/ diesen Link verwenden, so können Sie regex und Antworten in PHP versuchen

1

Sure! Hier ist eine Arbeits regex: https://regex101.com/r/IWP1Mh/1

Und hier ist der Arbeitscode: https://3v4l.org/QQZj5

<?php 

$regex = '#(?<names>\w*)=\w*#'; 
$string = 'toto=on test=on azerty=on gogo=on'; 
preg_match_all($regex, $string, $matches); 
$names = $matches['names']; 
var_dump($names); 

Welche Ausgänge:

array(4) { 
[0]=> string(4) "toto" 
[1]=> string(4) "test" 
[2]=> string(6) "azerty" 
[3]=> string(4) "gogo" 
} 
2

Ein anderer Ansatz für diese Frage wäre

<?php 

$str = "toto=on test=on azerty=on gogo=on"; 
$res = str_replace("=on","", $str); 
$array = explode(" ", $res); 
print_r($array); //Array ([0] => toto [1] => test [2] => azerty [3] => gogo) 

?> 
1

Sie juse explode() verwenden können:

$str = 'toto=on test=on azerty=on gogo=on'; 
$words = array_map(function($item){ return substr($item, 0, -3); }, explode(' ', $str));