I have a function which fixes capitalization for those naughty users that insist on making everything UPPERCASE!
I want my function to only be called when a string c
if (preg_match('/[A-Z]{3,}|\b[A-Z]\b/', $str)) {
// Naughty user!
}
Let's look at that...
[A-Z] // Character class from A-Z
{3,} // 3 or more quantifier
| // Logical or pipe
\b // Word boundary
[A-Z] // Character class from A-Z
\b // Word boundary
That may make it easier to understand :)
This will match if between two word boundaries all capitals and/or if there are 3 uppercase letters in a row. Please clarify if that is what you want.
You may want to decide what triggers a whole word with capitals. For example, this sentence would be considered naughty.
I like apples.
.. because of the I. Perhaps you want to put a quantifier there too, like {2,}. It depends on what the string will contain.