Try the following:
preg_replace("/([\x{d800}-\x{dbff}])([\x{dc00}-\x{dfff}])/u", "emoji", $strText);
PCRE doesn't support the \uXXXX format, so you can use \x{XXXX} instead. Also you'll need the u modifier (at end of regex) for dealing with UTF-8
Information on syntax from http://www.regular-expressions.info/unicode.html
Perl and PCRE do not support the \uFFFF syntax. They use \x{FFFF}
instead.
Information on u modifier from http://php.net/manual/en/reference.pcre.pattern.modifiers.php
u (PCRE_UTF8) This modifier turns on additional functionality of PCRE
that is incompatible with Perl. Pattern and subject strings are
treated as UTF-8. This modifier is available from PHP 4.1.0 or greater
on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern and
the subject is checked since PHP 4.3.5. An invalid subject will cause
the preg_* function to match nothing; an invalid pattern will trigger
an error of level E_WARNING. Five and six octet UTF-8 sequences are
regarded as invalid since PHP 5.3.4 (resp. PCRE 7.3 2007-08-28);
formerly those have been regarded as valid UTF-8.
\ud800with\x{d800}preg_replace("/([\x{d800}-\x{dbff}])([\x{dc00}-\x{dfff}])/", "emoji", $strText);I getCompilation failed: character value in \x{...} sequence is too large at offset 9.uat the end of your regex....)/u"...\p{Cs}:~(*UTF8)\p{Cs}[\x{dc00}-\x{dfff}]~