PHP Eingaben aus einem Befehl auslesen

Pfandfinder

Lieutenant
Registriert
Nov. 2020
Beiträge
619
hi,

ich erhalte so eine Art von Eingabe als $message und möchte die einzelnen Werte (id, reason) extra verarbeiten :

/report userid reason

Die user-id kann ich so auslesen:

PHP:
$id = substr(substr($message, 8), 0, strpos(substr($message, 8), ' '));

denn ich weiß, dass /report 7 Zeichen sind. daher lese ich alles ab Zeichen 8 bis zum Leerzeichen aus.

Aber die id ist immer unterschiedlich lang. Wie lese ich jetzt den Grund aus ? Würde es reichen wenn ich sag alles nach dem 2. Leerzeichen ? Aber wie setze ich das dann um?
 
Hi schau dir mal die Funktion explode an ;)

PHP:
$pizza  = "Teil1 Teil2 Teil3 Teil4 Teil5 Teil6";
$teile = explode(" ", $pizza);
echo $teile[0]; // Teil1
echo $teile[1]; // Teil2

Würde bei dir auch ganz gut passen, einfach nach "Leerzeichen" zu teilen und dann kannst du auf die drei unterschiedlichen Elemente bequem zugreifen.
 
nicht wirklich dann darf reason kein Satz also kein Leerzeichen enthalten... gibt nur das erste Wort aus
 
Oder du nutzt was du bereits hast:

PHP:
$endid = strpos($message, ' ', 8); // Position des zweiten Leerzeichens
$id = substr($message, 8, $endid-8); // String von pos 8 bis zum zweiten Leerzeichen
$reason = substr($message, $endid+1); // String vom zweiten Leerzeichen bis zum ende
 
  • Gefällt mir
Reaktionen: Pfandfinder
Pfandfinder schrieb:
nicht wirklich dann darf reason kein Satz also kein Leerzeichen enthalten... gibt nur das erste Wort aus

Man kann bei Explode ein Limit mit angeben wieviele Teile maximal enthalten sein sollen. Bspw.
PHP:
$pizza  = "Teil1 Teil2 Teil3 Teil4 Teil5 Teil6";
$teile = explode(" ", $pizza, 2);
echo $teile[0]; // Teil1
echo $teile[1]; // Teil2 Teil3 Teil4 Teil5 Teil6
 
Zurück
Oben