Autor | Zpráva | ||
---|---|---|---|
Martinek Profil * |
#1 · Zasláno: 8. 2. 2013, 10:35:22
DObrý den potřeboval bych poradit .. udělal sem si AJAX chat a potřebuju sprovoznit jeden příkaz pro adminy ... jo vim jak udělat pak tu funkci apod , ale nevim jak udělat ten příkaz že když ve zprávě napíše /block [nick uzivatele] .... kdyby ten prikaz byl jen /block tak to udelam normalne pomoci podminky ale ja tam potrebuji jeste ten nick .. "mezeru a potom zadat nick" a pak ten nick co tam zadal se da do promeny ktera ho v DB blokcne ... děkuji za každou pomoct snad mě chápete...
|
||
scheras Profil * |
#2 · Zasláno: 8. 2. 2013, 10:48:16
Jestliže dobře chápu Váš dotaz, tak je potřeba rozdelit řetězec na příkaz (/block) a nick. Na to v php existuje funkce, která dostane jako parametry string a znak podle kterého se dělí (ve vašem případě tedy mezera) a uloží části do pole. Ty pak normálně zpracujete stejně jako u zbatku příkazů.
|
||
Martinek Profil * |
#3 · Zasláno: 8. 2. 2013, 10:50:43 · Upravil/a: Martinek
takže to mam udělat přes explode? :)
no dobře to bysme měli ještě bych potřeboval aby tato funkce vrátila TRUE v případě že k tomu je tedy pčipsán jakýkoli nick if($cmd == "/ban") { return true;} - To právě nevím jak změnit |
||
scheras Profil * |
#4 · Zasláno: 8. 2. 2013, 10:57:54
Asi bych testoval, jestli ma pole dvě položky.
|
||
Martinek Profil * |
#5 · Zasláno: 8. 2. 2013, 10:58:44
No to právě nevím jak proto se vás ptám :) Jinak děkuji za rady
|
||
scheras Profil * |
#6 · Zasláno: 8. 2. 2013, 11:01:22
if ($pole[1]) { byl zadan nick; } |
||
Joker Profil |
#7 · Zasláno: 8. 2. 2013, 11:02:59
Martinek:
Raději přes regulární výrazy. Nějak takhle: $text = "blabla /ban troll blabla"; $matches = array(); preg_match("~\/ban (\S+)~", $text, $matches); $zabanovat = $matches[1]; // přezdívka (zde "troll") Takhle by to fungovalo v každé zprávě jen pro jeden příkaz. Kdyby to mělo fungovat pro více („/ban první /ban druhý“), muselo by se použít preg_match_all
|
||
Martinek Profil * |
#8 · Zasláno: 8. 2. 2013, 11:09:13 · Upravil/a: Martinek
Dobře zkusím , každopádně děkuji...
Jo dobrá ... teď sem potřeboval vyřešit jestli zpráva kterou pošle obsahuje ten příkaz zkoušel sem to přes strpos ale nefunguje mi ... if(strpos($cmd,"/ban ")) { return true; } sem udělal ale vrací false i přes to že je to tam napsané ... :/ |
||
Joker Profil |
Martinek:
„teď sem potřeboval vyřešit jestli zpráva kterou pošle obsahuje ten příkaz“ Pravda, to jsem tam taky mohl napsat, tohle je návratová hodnota té funkce preg_match. Tak takhle (pozn.: Abych ukázal obě varianty, teď zas používám preg_match_all): $text = "blabla /ban troll blabla"; // všechny výskyty "/ban přezdívka" $banovat = preg_match_all("~\/ban (\S+)~", $text, $bans); if($banovat > 0) { // $bans je dvourozměrné pole, u každého záznamu je $bans[…][1] přezdívka koho zabanovat foreach($bans as $match) { $koho = $match[1]; // přezdívka (zde "troll"); // nějaký další kód k banu } } false v případě chyby a počet nalezených shod v případě úspěchu (tj. žádná shoda vrátí nulu)
false , 0 nebo 1.
Opravuji: Příkaz → Funkce |
||
Martinek Profil * |
#10 · Zasláno: 8. 2. 2013, 12:12:47
ok děkuji :)
|
||
Časová prodleva: 12 let
|
0