$re = '/(?!\d\d)(?![a-zA-Z]{2})(?:(?:>?[:;=%8BXx][\'‘’]?[-o*,^ã£]?(?:(?P<mouth>[()|Il])(?P=mouth)*|[\/0\]o\\\\D\[PpSs<>{}CcOXx*3@ÞþbL&?$#]))|(?:[()\\\\{}\/<\[>\]DOo0|SsXxlI*@q][-o*,]?[\'‘’]?[:=8;%Xx]<?))|(?P<head>\()?(?:(?P<eye>[<>v*.^~=ಠ-])?[_.-](?P=eye)|[o0O][_.-][o0O]|>[_.-]?<)[\'‘’]?(?(head)\))|xD|XD|XP|xP|DX|<3|\^\^|\\\\o\/|o\/|\\\\o/m';
$str = ':-) :) :D :o) :] :3 :c) :> =] 8) =) :} :^) :ã£)
:-D 8-D 8D x-D xD X-D XD =-D =D =-3 =3 B^D
:-))
>:[ :-( :( :-c :c :-< :ã£C :< :-[ :[ :{
;(
:-|| :@ >:(
:\'-( :\'(
:\'-) :\')
D:< D: D8 D; D= DX v.v D-\':
>:O :-O :O :-o :o 8-0 O_O o-o O_o o_O o_o O-O
:* :^* ( \'}{\' )
;-) ;) *-) *) ;-] ;] ;D ;^) :-,
>:P :-P :P X-P x-p xp XP :-p :p
=p :-Þ :Þ :þ :-þ :-b :b d:
>:\\ >:/ :-/ :-. :/ :\\ =/ =\\ :L =L :S >.<
:| :-|
:$
:-X :X :-# :#
O:-) 0:-3 0:3 0:-) 0:) 0;^)
>:) >;) >:-)
}:-) }:) 3:-) 3:)
o/\\o ^5 >_>^ ^<_<
|;-) |-O
:-& :&
#-)
%-) %)
<:-|
ಠ_à²
\\o/
*\\0/*
(>_<)
~_~
-.-\'
(=_=)
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php