Detect emoticons in string

I found that you need PHP 7 and MySQL 5.5 to use emoticons in a string that you want to upload to the database. I don’t have these specification on my server so I want to give an error message in laravel or php.

Is there a way to detect emoticons in php? If so then I can create a custom validation or something like that?

I’ve tried alpha_dash validation in Laravel but then it isn’t possible to do one old-school like this one :-)

Answer

To follow on from Johannes answer I found a solution on a forum somewhere. This regex does the trick 🙂

    $unicodeRegexp = '([*#0-9](?>\xEF\xB8\x8F)?\xE2\x83\xA3|\xC2[\xA9\xAE]|\xE2..(\xF0\x9F\x8F[\xBB-\xBF])?(?>\xEF\xB8\x8F)?|\xE3(?>\x80[\xB0\xBD]|\x8A[\x97\x99])(?>\xEF\xB8\x8F)?|\xF0\x9F(?>[\x80-\x86].(?>\xEF\xB8\x8F)?|\x87.\xF0\x9F\x87.|..(\xF0\x9F\x8F[\xBB-\xBF])?|(((?<zwj>\xE2\x80\x8D)\xE2\x9D\xA4\xEF\xB8\x8Fk<zwj>\xF0\x9F..(k<zwj>\xF0\x9F\x91.)?|(\xE2\x80\x8D\xF0\x9F\x91.){2,3}))?))';