"Richard Davey" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi all, > > It's a warm sunny day and I'm trying to wrap my head around the > following: > > I want to be able to check to see if, in a string, the user has > entered too many consecutive characters and not enough spaces. For > example they might enter a subject like: > > "hello world!!!!!!!!!!!!!!!!! how arrrrrrrrrrrrrrre you today?????!!" > > Does anyone have a nice technique for checking the following: > > 1) Count the length of the words in the string, i.e. if there are any > words beyond say 20 characters then I need to know what they are so I > can flag up a warning. > > 2) Count the number of punctuation characters vs. alphanumerics - I > don't want the exclamation mark syndrome shown above, so I need to set > a friendly trade-off limit somehow. > > Any thoughts appreciated. > > -- > Best regards, > Richard Davey > http://www.phpcommunity.org/wiki/296.html
Hi Richard, to count the words and check its length you could use explode() to split the string into an array by a space (' '): $words = explode(' ', $input); $allowedWordLength = 20; $tooLongWord = false; $checkChar = '!'; $tooManyChars = false; // loop through the array and check each word's length and char occurrence foreach ($words as $word) { if (strlen($word) > $allowedWordLength) $tooLongWord = true; // check the occurrence of a special character in the word if (substr_count($word, $checkChar) > 1) $tooManyChars = true; } // print an error if one of the words is too long if ($tooLongWord) echo 'Error: Your words are too long!'; // print an error if the checked char occurred too often in one of the words if ($tooManyChars) echo 'You had too many ' . $checkCar . ' in your input!'; The above code is not tested but should work. Hope this helps. Regards, Torsten -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php