Another PHP regexp problem...

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gerard Nijboer

Gerard Nijboer

07/01/2010 13:20:00
Quote Anchor link
Hey,

Ik ben bezig met een chatbot, en de gebruiker kan zijn nickname veranderen door bijvoorbeeld 'nickname Pietje Puk' te verzenden. Ik wil echter dat er alleen a-z A-Z 0-9 en spaties gebruikt mogen worden, anders wordt er een foutmelding teruggezonden naar de gebruiker.

Dit is wat ik heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
case "nickname":
                        if (strlen($bot_msg) <= 9) {
                            echo "Your nickname is ".$bot_User['nickname'].".";
                            $bot_replied = true;
                            }
elseif (preg_match("/[^a-zA-Z0-9]/", $bot_msg)) {
                            echo "I'm sorry, but this is not a valid nickname, please try something else.<error>";
                            $bot_replied = true;
                            }
else {
                            $bot_User['nickname'] = substr($bot_msg, 9);
                            $bot_Mysql['Result'] = mysql_query("UPDATE ".$bot_Mysql['Prefix']."clients SET nickname='".$bot_User['nickname']."' WHERE userkey='".$bot_userkey."' AND user='".$bot_user."' LIMIT 1;") or die(mysql_error());
                            echo "From now on, I will refer to you as " . $bot_User['nickname'] . ".";
                            $bot_replied = true;
                            }

                            break;
?>


Maar ik krijg het niet aan het werkt, wat doe ik verkeerd?
Overigens mag de lengte van het bericht ($bot_msg) niet korter zijn dan negen tekens, anders verzendt de gebruiker enkel het woord 'nickname'.

Alvast heel erg bedankt!

Gerard Nijboer
 
PHP hulp

PHP hulp

24/11/2024 21:12:41
 
Gerard Nijboer

Gerard Nijboer

07/01/2010 13:28:00
Quote Anchor link
Sorry! Opgelost!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
} elseif (preg_match("/[^a-zA-Z0-9]/", substr($bot_msg, 9)) == 1) {
?>

Ik was vergeten dat ik de gehele boodschap evalueerde, en niet alleen de nieuwe nickname, nu ik de functie 'nickname ' uit de te testen string weglaat, werkt het wel, en knikkert hij hem er uit zodra er iets anders dan :alnum: in je nickname staat.

Sorry!
 

07/01/2010 15:33:00
Quote Anchor link
Je kunt er ook wellicht /^\w+$/ van maken. \w match met alfanumeriek karakters en underscore.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.