I have created a function that converts emoji short name to image but I am stuck how do i get emojis short names from a string so the function can convert those to emoji image .
$field_from_db = ':slight_smile:';
$shortcode_replace = shortcode_replace();
$shortname = $shortcode_replace[$field_from_db]; This code search in shortcode fucntion and replaces it with unicode to get cdn image
$shortname = $shortname[0];
echo convertImage($shortname); after we got unicode for cdn predesigned in the shortcodes function it returns back with the image url
Now i am confuse how it will convert from a string
$field_from_db = 'Hello How are you :slight_smile::joy:';
//Here we have a string so how do i convert all short names to emoji using the function i created
2
Answers
A simple solution is to use
preg_match_all
function to return the short names from string and iterate through each of them to convert into image.Demo: https://3v4l.org/ro1m3
Hope it helps!
Depending on the format of the short names that you store, you could for example start the match with 1 or more a characters a-z or digits using a case insensitive pattern.
Then optionally repeat a single character from for examople a character class
[-’_]
followed by again 1 or more a characters a-z or digits.Regex demo | Php demo
For a bit broader match, you could match 1 or more non whitespace characters excluding a colon, between to colons:
Regex demo
Example:
Output