Jump to content

Using regex to deal with emoji icons


speedy33417

Recommended Posts

I have a website that's visited by iPhone and iPhone Touch mostly. The site takes comments and has a self-built forum. The iPhone has its own emoticons called emoji. When used in text they look like this: 

 

Comments and posts are stored with the real HTML code for the icon, such as above. What I'm trying to find a solution for is replacing them with image tags when displayed.

 

For example I have user comment in my database like so.

 

$message = "This website is cool!& #57612; Keep up the good work!";
// Here comes the regex magic...
$message = "This website is cool!<img src=\"http://www.mysite.com/images/emoji123.png\" /> Keep up the good work!";

 

The problem is that there are over 500 icons. I was thinking to use two arrays to store both formats:

 

$emoji[123] = "& #57612;";
$html[123] = "<img src=\"http://www.mysite.com/images/emoji123.png\" />";

 

 

So if I find a emoji script in the text then I check which one it is from my array and then replace it with the corresponging html versio in the text.

 

The problem is that I suck at Regex, and would really welcome any help that you can throw at me.

 

Thanks!

Link to comment
https://forums.phpfreaks.com/topic/200106-using-regex-to-deal-with-emoji-icons/
Share on other sites

Many possible solutions, here's one off the top of my head...

 

function regify( $input ) {
   return '#\b'.preg_quote( $input, '#' ) . '\b#';
}

function imagify( $input ) {
   return '<img src="http://www.mysite.com/images/' . $input . '" />';
}

$tags = array ('& #57612', '& #somethingelse');
$files = array('emoji123.png', 'emoji456.png');

$patterns = array_map( $tags , 'regify' );
$replacements = array_map( $files, 'imagify' );

$output = preg_replace( $patterns, $replacements, $input );

Disclaimer: I just got up, this may not work as is :).

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.