chat commands

Status
Niet open voor verdere reacties.

leuthrick

Gebruiker
Lid geworden
17 sep 2008
Berichten
454
hallo,

ik zou graag in mijn chat systeem die ik aan het maken ben commands maken bv.

/away

dan wil ik dat hij de status veranderd en

/titel test

dat dan de titel test word


maar ik kom er maar niet uit hoe ik die commands kan controleren.


alvast bedankt:D

mvg leuthrick
 
stripos?

PHP:
$command = '/away';
if ( stripos( $command, '/away' ) === 0 ) {
  // begint met '/away'
}

Let op 3 is-tekens, want de functie geeft FALSE terug als hij het niet kan vinden, en 0 als de gevonden tekst begint op het eerste teken in de string.
 
oke bedankt!:thumb:

maar nu de 2de van bv. titel

/titel test

dat dan de titel test word?


alvast bedankt
 
Dat kan met eenzelfde constructie:
PHP:
if ( stripos( $command, '/titel' ) === 0 ) {
Met strpos kan je dan de positie van de spatie opzoeken.
PHP:
  $spatie_pos = strpos($command, " ");
Met substr kan je dan de rest van de regel inlezen.
PHP:
  $nieuwe_titel = substr($command, $spatie_pos+1);
  // de code om de titel te vervangen door $nieuwe_titel
}
 
oke maar kun je met die code ook het 2de en 3de uitlezen?

bv.

/settings titel subtitel enz.

alvast bedankt
 
Je kunt vaker dan eens op spatie zoeken, als je de eerste lokatie onthoud:

PHP:
$eerste_spatie_pos = strpos($command, " ");
// begin met zoeken ná ed eerste spatie.
$tweede_spatie_pos = strpos($command, " ", $eerste_spatie_pos + 1 );

Daarna kun je knippen tussen eerste en tweede, en daarna na de tweede. Herhaal voor meer commando's :)
 
dus zo:

PHP:
if ( stripos( $command, '/titel' ) === 0 ) {
   $eerste_spatie_pos = strpos($command, " ");
   $tweede_spatie_pos = strpos($command, " ", $eerste_spatie_pos + 1 );
   $nieuwe_titel = substr($command, $eerste_spatie_pos+1);
   $subtitel = substr($command, $tweede_spatie_pos+1);
}

alvast bedankt:D
 
Bijna goed. Je moet de substr om de titel te pakken nog laten stoppen nadat hij de titel heeft.

Daarvoor moet je dus de lengte van de titel bepalen (hint: het stuk tussen de eerste en de tweede spatie) en dat getal als 3e argument meegeven, zodat hij zoveel tekens knipt.
 
dat snap ik niet helemaal.

zou je een voorbeeld code kunnen plaatsen?

bedankt
 
PHP:
$nieuwe_titel = substr($command, $eerste_spatie_pos+1);
Dit pakt het deel van $command vanaf $eerste_spatie_pos+1 tot aan het einde van $command. Substr heeft een optionele derde parameter: de lengte van het deel dat hij moet pakken. In dit geval is dat de lengte tussen de twee spaties ($tweede_spatie_pos-$eerste_spatie_pos-1).
 
dus dit:
PHP:
if ( stripos( $command, '/titel' ) === 0 ) {
   $eerste_spatie_pos = strpos($command, " ");
   $tweede_spatie_pos = strpos($command, " ", $eerste_spatie_pos + 1 );
   $nieuwe_titel = substr($command, $eerste_spatie_pos+1, $tweede_spatie_pos+1);
   $subtitel = substr($command, $tweede_spatie_pos+1, $eerste_spatie_pos+1);
}


alvast bedankt
 
Niet helemaal. Het laatste argument van substr is het aantal tekens dat hij moet pakken. In dit geval is dat $tweede_spatie_pos-$eerste_spatie_pos-1.
Dus
PHP:
$nieuwe_titel = substr($command, $eerste_spatie_pos+1, $tweede_spatie_pos-$eerste_spatie_pos-1);
$subtitel = substr($command, $tweede_spatie_pos+1);
Ik neem aan dat de subtitel helemaal doorloopt tot het einde van $command. In dat geval mag je het derde argument weglaten.
 
oke dus als je 3 dingen gebruikt dan krijg je dit:

PHP:
$nieuwe_titel = substr($command, $eerste_spatie_pos+1, $tweede_spatie_pos-$eerste_spatie_pos-1);
$subtitel = substr($command, $tweede_spatie_pos+1, $derde_spatie_pos-$tweede_spatie_pos-1);
$laatste = $subtitel = substr($command, $derde_spatie_pos+1);

alvast bedankt
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan