• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

preg_match_all

unglaublich

New member
Kleines Problemchen.

PHP:
$input = "Kosten: Metall:850 Kristall:350 Soldaten:30
Panzerung:57 
Rumpfgröße:1 Agilität:70,00% 
Geschwindigkeit:8pc/h Reichweite:4pc
Verbrauch:5/h Kapazität:5
Bauzeit: 00:20:00";

PHP:
$matches  = array(); 
$pattern  = '~(.+):(.*[ ])~U';
preg_match_all($pattern, $input, $matches, PREG_SET_ORDER);
print_r($matches);

Allerdings geht bei dem Code Soldaten und Reichweite unter weil am Ende kein Leerzeichen ist (einfach den text markieren dann sieht man es schon). Allerdings weiß ich nicht wie ich es definieren soll im regex. Und den Benutzern sagen sie sollen Leerzeichen manuel einfügen ist keine Lösung. Mit trim und preg_replace hab ich es auch schon probiert, funzt nicht, oder ich setz es falsch ein.

So wird es im Code später eingebaut

PHP:
echo search_match('Soldaten', $input); ## zum testen
function search_match ($x, $input) {
	$matches  = array(); 
	$pattern  = '~(.+):(.*[ ])~U';
	preg_match_all($pattern, $input, $matches, PREG_SET_ORDER);
	foreach ($matches as $array => $key ) {
		foreach ($key as $subkey => $value) {
			if ($x == $value) {
				return $matches[$array][$subkey + 1];
			}
		}
	}
}

Weil ich nen SQL Insert mache.

Ich hoffe ihr könnt mir helfen.
 
Habs rausgefunden.

PHP:
function abg_search_match ($x, $input) {
	$matches  = array(); 
	$pattern  = '~(.+):(.*[ |\n|\r|\t])~U';
	preg_match_all($pattern, $input, $matches, PREG_SET_ORDER);
	foreach ($matches as $array => $key ) {
		foreach ($key as $subkey => $value) {
			if ($x == $value) {
				return $matches[$array][$subkey + 1];
			}
		}
	}
}

Auf newline hatte ich es auch getestet gehabt aber da wollte es nicht.
Wichtig ist das es funzt ;)
 
Zurück
Oben