[ Index ]

PHP Cross Reference of phpBB-3.2.11-deutsch

title

Body

[close]

/vendor/s9e/text-formatter/src/Plugins/Emoji/ -> Parser.php (source)

   1  <?php
   2  
   3  /*
   4  * @package   s9e\TextFormatter
   5  * @copyright Copyright (c) 2010-2019 The s9e Authors
   6  * @license   http://www.opensource.org/licenses/mit-license.php The MIT License
   7  */
   8  namespace s9e\TextFormatter\Plugins\Emoji;
   9  use s9e\TextFormatter\Plugins\ParserBase;
  10  class Parser extends ParserBase
  11  {
  12      protected $shortnameRegexp = '/:[-+_a-z0-9]+(?=:)/';
  13      protected $unicodeRegexp = '((?:[#*0-9]\\xEF\\xB8\\x8F(?:\\xE2\\x83\\xA3)?|\\xC2[\\xA9\\xAE]\\xEF\\xB8\\x8F|\\xE2(?:\\x80\\xBC\\xEF\\xB8\\x8F|\\x81\\x89\\xEF\\xB8\\x8F|\\x84[\\xA2\\xB9]\\xEF\\xB8\\x8F|\\x86[\\x94-\\x99\\xA9\\xAA]\\xEF\\xB8\\x8F|\\x8C(?:[\\x9A\\x9B]|\\xA8\\xEF\\xB8\\x8F)|\\x8F(?:[\\x8F\\xAD-\\xAF\\xB1\\xB2\\xB8-\\xBA]\\xEF\\xB8\\x8F|[\\xA9-\\xAC\\xB0\\xB3])|\\x93\\x82\\xEF\\xB8\\x8F|\\x96[\\xAA\\xAB\\xB6]\\xEF\\xB8\\x8F|\\x97(?:[\\x80\\xBB\\xBC]\\xEF\\xB8\\x8F|[\\xBD\\xBE])|\\x98(?:[\\x80-\\x84\\x8E\\x91\\x98\\xA0\\xA2\\xA3\\xA6\\xAA\\xAE\\xAF\\xB8-\\xBA]\\xEF\\xB8\\x8F|[\\x94\\x95]|\\x9D(?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF]))|\\x99(?:[\\x80\\x82\\x9F\\xA0\\xA3\\xA5\\xA6\\xA8\\xBB\\xBE]\\xEF\\xB8\\x8F|[\\x88-\\x93\\xBF])|\\x9A(?:[\\x92\\x94-\\x97\\x99\\x9B\\x9C\\xA0\\xB0\\xB1]\\xEF\\xB8\\x8F|[\\x93\\xA1\\xAA\\xAB\\xBD\\xBE])|\\x9B(?:[\\x88\\x8F\\x91\\x93\\xA9\\xB0\\xB1\\xB4\\xB7\\xB8]\\xEF\\xB8\\x8F|[\\x84\\x85\\x8E\\x94\\xAA\\xB2\\xB3\\xB5\\xBA\\xBD]|\\xB9(?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF])(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?)|\\x9C(?:[\\x82\\x88\\x89\\x8F\\x92\\x94\\x96\\x9D\\xA1\\xB3\\xB4]\\xEF\\xB8\\x8F|[\\x8A\\x8B](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\x8C\\x8D](?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF])|[\\x85\\xA8])|\\x9D(?:[\\x84\\x87\\xA3\\xA4]\\xEF\\xB8\\x8F|[\\x8C\\x8E\\x93-\\x95\\x97])|\\x9E(?:[\\x95-\\x97\\xB0\\xBF]|\\xA1\\xEF\\xB8\\x8F)|\\xA4[\\xB4\\xB5]\\xEF\\xB8\\x8F|\\xAC(?:[\\x85-\\x87]\\xEF\\xB8\\x8F|[\\x9B\\x9C])|\\xAD[\\x90\\x95])|\\xE3(?:\\x80[\\xB0\\xBD]|\\x8A[\\x97\\x99])\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x80\\x84|\\x83\\x8F|\\x85[\\xB0\\xB1\\xBE\\xBF]\\xEF\\xB8\\x8F|\\x86[\\x8E\\x91-\\x9A]|\\x87[\\xA6-\\xBF](?:\\xF0\\x9F\\x87[\\xA6-\\xBF])?|\\x88(?:[\\x82\\xB7]\\xEF\\xB8\\x8F|[\\x81\\x9A\\xAF\\xB2-\\xB6\\xB8-\\xBA])|\\x89[\\x90\\x91]|\\x8C(?:[\\xA1\\xA4-\\xAC\\xB6]\\xEF\\xB8\\x8F|[\\x80-\\xA0\\xAD-\\xB5\\xB7-\\xBF])|\\x8D(?:[\\x80-\\xBC\\xBE\\xBF]|\\xBD\\xEF\\xB8\\x8F)|\\x8E(?:[\\x96\\x97\\x99-\\x9B\\x9E\\x9F]\\xEF\\xB8\\x8F|[\\x80-\\x84\\x86-\\x93\\xA0-\\xBF]|\\x85(?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?)|\\x8F(?:[\\x82\\x87](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\x83\\x84\\x8A](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x8B\\x8C](?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF])(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x8D\\x8E\\x94-\\x9F\\xB5\\xB7]\\xEF\\xB8\\x8F|[\\x80\\x81\\x85\\x86\\x88\\x89\\x8F-\\x93\\xA0-\\xB0\\xB8-\\xBF]|\\xB3\\xEF\\xB8\\x8F(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x8C\\x88)?|\\xB4(?:\\xE2\\x80\\x8D\\xE2\\x98\\xA0\\xEF\\xB8\\x8F|\\xF3\\xA0\\x81\\xA7\\xF3\\xA0\\x81\\xA2\\xF3\\xA0\\x81(?:\\xA5\\xF3\\xA0\\x81\\xAE\\xF3\\xA0\\x81\\xA7|\\xB3\\xF3\\xA0\\x81\\xA3\\xF3\\xA0\\x81\\xB4|\\xB7\\xF3\\xA0\\x81\\xAC\\xF3\\xA0\\x81\\xB3)\\xF3\\xA0\\x81\\xBF)?)|\\x90(?:[\\x80-\\x94\\x96-\\xBE]|\\x95(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA6\\xBA)?|\\xBF\\xEF\\xB8\\x8F)|\\x91(?:[\\x82\\x83\\x86-\\x90\\xA6\\xA7\\xAB-\\xAD\\xB0\\xB2\\xB4-\\xB6\\xB8\\xBC](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\xAE\\xB1\\xB3\\xB7](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x80\\x84\\x85\\x91-\\xA5\\xAA\\xB9-\\xBB\\xBD-\\xBF]|\\x81\\xEF\\xB8\\x8F(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x97\\xA8\\xEF\\xB8\\x8F)?|\\xA8(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]\\xEF\\xB8\\x8F|\\x9C\\x88\\xEF\\xB8\\x8F|\\x9D\\xA4\\xEF\\xB8\\x8F\\xE2\\x80\\x8D\\xF0\\x9F(?:\\x92\\x8B\\xE2\\x80\\x8D\\xF0\\x9F)?\\x91\\xA8)|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x91(?:[\\xA8\\xA9]\\xE2\\x80\\x8D\\xF0\\x9F\\x91(?:\\xA6(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6)?|\\xA7(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91[\\xA6\\xA7])?)|\\xA6(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6)?|\\xA7(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91[\\xA6\\xA7])?)|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA6[\\xAF-\\xB3\\xBC\\xBD]))|\\xF0\\x9F\\x8F(?:\\xBB(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBC(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA8\\xF0\\x9F\\x8F\\xBB|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBD(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA8\\xF0\\x9F\\x8F[\\xBB\\xBC]|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBE(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA8\\xF0\\x9F\\x8F[\\xBB-\\xBD]|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBF(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA8\\xF0\\x9F\\x8F[\\xBB-\\xBE]|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?))?|\\xA9(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]\\xEF\\xB8\\x8F|\\x9C\\x88\\xEF\\xB8\\x8F|\\x9D\\xA4\\xEF\\xB8\\x8F\\xE2\\x80\\x8D\\xF0\\x9F(?:\\x92\\x8B\\xE2\\x80\\x8D\\xF0\\x9F)?\\x91[\\xA8\\xA9])|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x91(?:\\xA6(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6)?|\\xA7(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91[\\xA6\\xA7])?|\\xA9\\xE2\\x80\\x8D\\xF0\\x9F\\x91(?:\\xA6(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA6)?|\\xA7(?:\\xE2\\x80\\x8D\\xF0\\x9F\\x91[\\xA6\\xA7])?))|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA6[\\xAF-\\xB3\\xBC\\xBD]))|\\xF0\\x9F\\x8F(?:\\xBB(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91\\xA8\\xF0\\x9F\\x8F[\\xBC-\\xBF]|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBC(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91(?:\\xA8\\xF0\\x9F\\x8F[\\xBB\\xBD-\\xBF]|\\xA9\\xF0\\x9F\\x8F\\xBB)|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBD(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91(?:\\xA8\\xF0\\x9F\\x8F[\\xBB\\xBC\\xBE\\xBF]|\\xA9\\xF0\\x9F\\x8F[\\xBB\\xBC])|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBE(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91(?:\\xA8\\xF0\\x9F\\x8F[\\xBB-\\xBD\\xBF]|\\xA9\\xF0\\x9F\\x8F[\\xBB-\\xBD])|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?|\\xBF(?:\\xE2\\x80\\x8D(?:\\xE2(?:\\x9A[\\x95\\x96]|\\x9C\\x88)\\xEF\\xB8\\x8F|\\xF0\\x9F(?:\\x8C\\xBE|\\x8D\\xB3|\\x8E[\\x93\\xA4\\xA8]|\\x8F[\\xAB\\xAD]|\\x92[\\xBB\\xBC]|\\x94[\\xA7\\xAC]|\\x9A[\\x80\\x92]|\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\x91[\\xA8\\xA9]\\xF0\\x9F\\x8F[\\xBB-\\xBE]|\\xA6[\\xAF-\\xB3\\xBC\\xBD])))?))?|\\xAF(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?)|\\x92(?:[\\x81\\x82\\x86\\x87](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x83\\x85\\xAA](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\x80\\x84\\x88-\\xA9\\xAB-\\xBF])|\\x93(?:[\\x80-\\xBC\\xBF]|\\xBD\\xEF\\xB8\\x8F)|\\x94[\\x80-\\xBD]|\\x95(?:[\\x89\\x8A\\xAF\\xB0\\xB3\\xB6-\\xB9]\\xEF\\xB8\\x8F|[\\x8B-\\x8E\\x90-\\xA7]|\\xB4(?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF])|\\xB5(?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF])(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|\\xBA(?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?)|\\x96(?:[\\x87\\x8A-\\x8D\\xA5\\xA8\\xB1\\xB2\\xBC]\\xEF\\xB8\\x8F|[\\x95\\x96](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|\\x90(?:\\xEF\\xB8\\x8F|\\xF0\\x9F\\x8F[\\xBB-\\xBF])|\\xA4)|\\x97(?:[\\x82-\\x84\\x91-\\x93\\x9C-\\x9E\\xA1\\xA3\\xA8\\xAF\\xB3\\xBA]\\xEF\\xB8\\x8F|[\\xBB-\\xBF])|\\x98[\\x80-\\xBF]|\\x99(?:[\\x85-\\x87\\x8B\\x8D\\x8E](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x8C\\x8F](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\x80-\\x84\\x88-\\x8A])|\\x9A(?:[\\xA3\\xB4-\\xB6](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x80-\\xA2\\xA4-\\xB3\\xB7-\\xBF])|\\x9B(?:[\\x80\\x8C](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\x8B\\x8D-\\x8F\\xA0-\\xA5\\xA9\\xB0\\xB3]\\xEF\\xB8\\x8F|[\\x81-\\x85\\x90-\\x92\\x95\\xAB\\xAC\\xB4-\\xBA])|\\x9F[\\xA0-\\xAB]|\\xA4(?:[\\x8F\\x98-\\x9C\\x9E\\x9F\\xB0-\\xB6](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\xA6\\xB7-\\xB9\\xBD\\xBE](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x8D\\x8E\\x90-\\x97\\x9D\\xA0-\\xA5\\xA7-\\xAF\\xBA\\xBF]|\\xBC(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?)|\\xA5[\\x80-\\x85\\x87-\\xB1\\xB3-\\xB6\\xBA-\\xBF]|\\xA6(?:[\\xB5\\xB6\\xBB](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\xB8\\xB9](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x80-\\xA2\\xA5-\\xAA\\xAE-\\xB4\\xB7\\xBA\\xBC-\\xBF])|\\xA7(?:[\\x8D-\\x8F\\x96-\\x9D](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?(?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x92-\\x95](?:\\xF0\\x9F\\x8F[\\xBB-\\xBF])?|[\\x9E\\x9F](?:\\xE2\\x80\\x8D\\xE2\\x99[\\x80\\x82]\\xEF\\xB8\\x8F)?|[\\x80-\\x8A\\x90\\xA0-\\xBF]|\\x91(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\xA7\\x91|\\xF0\\x9F\\x8F(?:\\xBB(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\xA7\\x91\\xF0\\x9F\\x8F\\xBB)?|\\xBC(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\xA7\\x91\\xF0\\x9F\\x8F[\\xBB\\xBC])?|\\xBD(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\xA7\\x91\\xF0\\x9F\\x8F[\\xBB-\\xBD])?|\\xBE(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\xA7\\x91\\xF0\\x9F\\x8F[\\xBB-\\xBE])?|\\xBF(?:\\xE2\\x80\\x8D\\xF0\\x9F\\xA4\\x9D\\xE2\\x80\\x8D\\xF0\\x9F\\xA7\\x91\\xF0\\x9F\\x8F[\\xBB-\\xBF])?))?)|\\xA9[\\xB0-\\xB3\\xB8-\\xBA]|\\xAA[\\x80-\\x82\\x90-\\x95]))(?!\\xEF\\xB8\\x8E)(?:\\xEF\\xB8\\x8F)?)S';
  14  	public function parse($text, array $matches)
  15      {
  16          $this->parseShortnames($text);
  17          $this->parseCustomAliases($text);
  18          $this->parseUnicode($text);
  19      }
  20  	protected function addTag($tagPos, $tagLen, $hex)
  21      {
  22          $tag = $this->parser->addSelfClosingTag($this->config['tagName'], $tagPos, $tagLen, 10);
  23          $seq = \str_replace(['-200d', '-fe0f'], '', $hex);
  24          $tag->setAttribute($this->config['attrName'], $seq);
  25          $tseq = \ltrim($hex, '0');
  26          if (\strpos($tseq, '-200d') === \false)
  27              $tseq = \str_replace('-fe0f', '', $tseq);
  28          $tag->setAttribute('tseq', $tseq);
  29      }
  30  	protected function getHexSequence($str)
  31      {
  32          $seq = [];
  33          $i   = 0;
  34          do
  35          {
  36              $cp = \ord($str[$i]);
  37              if ($cp >= 0xF0)
  38                  $cp = ($cp << 18) + (\ord($str[++$i]) << 12) + (\ord($str[++$i]) << 6) + \ord($str[++$i]) - 0x3C82080;
  39              elseif ($cp >= 0xE0)
  40                  $cp = ($cp << 12) + (\ord($str[++$i]) << 6) + \ord($str[++$i]) - 0xE2080;
  41              elseif ($cp >= 0xC0)
  42                  $cp = ($cp << 6) + \ord($str[++$i]) - 0x3080;
  43              $seq[] = \sprintf('%04x', $cp);
  44          }
  45          while (++$i < \strlen($str));
  46          return \implode('-', $seq);
  47      }
  48  	protected function parseCustomAliases($text)
  49      {
  50          if (empty($this->config['customRegexp']))
  51              return;
  52          $matchPos = 0;
  53          if (isset($this->config['customQuickMatch']))
  54          {
  55              $matchPos = \strpos($text, $this->config['customQuickMatch']);
  56              if ($matchPos === \false)
  57                  return;
  58          }
  59          \preg_match_all($this->config['customRegexp'], $text, $matches, \PREG_OFFSET_CAPTURE, $matchPos);
  60          foreach ($matches[0] as $_8bb89e38)
  61          {
  62              list($alias, $tagPos) = $_8bb89e38;
  63              if (isset($this->parser->registeredVars['Emoji.aliases'][$alias]))
  64              {
  65                  $hex = $this->getHexSequence($this->parser->registeredVars['Emoji.aliases'][$alias]);
  66                  $this->addTag($tagPos, \strlen($alias), $hex);
  67              }
  68          }
  69      }
  70  	protected function parseShortnames($text)
  71      {
  72          $matchPos = \strpos($text, ':');
  73          if ($matchPos === \false)
  74              return;
  75          \preg_match_all($this->shortnameRegexp, $text, $matches, \PREG_OFFSET_CAPTURE, $matchPos);
  76          foreach ($matches[0] as $_8bb89e38)
  77          {
  78              list($alias, $tagPos) = $_8bb89e38;
  79              $alias .= ':';
  80              $tagLen = \strlen($alias);
  81              if (isset($this->parser->registeredVars['Emoji.aliases'][$alias]))
  82              {
  83                  $hex = $this->getHexSequence($this->parser->registeredVars['Emoji.aliases'][$alias]);
  84                  $this->addTag($tagPos, $tagLen, $hex);
  85              }
  86              elseif (\preg_match('/^:[0-3][0-9a-f]{3,4}(?:-[0-9a-f]{4,5})*:$/', $alias))
  87                  $this->addTag($tagPos, $tagLen, \substr($alias, 1, -1));
  88          }
  89      }
  90  	protected function parseUnicode($text)
  91      {
  92          if (\strpos($text, "\xE2") === \false && \strpos($text, "\xEF") === \false && \strpos($text, "\xF0") === \false)
  93              return;
  94          \preg_match_all($this->unicodeRegexp, $text, $matches, \PREG_OFFSET_CAPTURE);
  95          foreach ($matches[0] as $_e20330bd)
  96          {
  97              list($emoji, $tagPos) = $_e20330bd;
  98              $this->addTag($tagPos, \strlen($emoji), $this->getHexSequence($emoji));
  99          }
 100      }
 101  }


Generated: Wed Nov 11 20:33:01 2020 Cross-referenced by PHPXref 0.7.1