PHP Classes

special characters?

Recommend this page to a friend!

      Twitter  >  All threads  >  special characters?  >  (Un) Subscribe thread alerts  
Subject:special characters?
Summary:I need to use special characters... but they don't work so well
Messages:6
Author:This is my name
Date:2009-08-05 20:31:18
Update:2010-07-22 14:54:31
 

  1. special characters?   Reply   Report abuse  
Picture of This is my name This is my name - 2009-08-05 20:31:18
When I use... for example, e accute, (é) and any other accute character I am getting parts of my tweet truncated.

particularly, the truncated part is always after the special character. I suspect it has something to do with urlencode().

I also suspect that the use of that function is mandatory... ? any other optional url encoding function usabe? Such as rawurlencode()? or a custom function?

  2. Re: special characters?   Reply   Report abuse  
Picture of Valmy Gomes Valmy Gomes - 2009-10-01 03:04:02 - In reply to message 1 from This is my name
Hi. This my solution:

function specialtwitter ($text) {
$text = htmlentities($text); //to convert the simple spec chars
$search = array('á','à','ã','â','é','ê','í','ó','ô','õ','ú','ü','ç','Á','À','Ã','Â','É','Ê','Í','Ó','Ô','Õ','Ú','Ü','Ç');
$replace = array('á ','à ','ã ','â ','é ','ê ','í ','ó ','ô ','õ ','ú ','ü ','ç ','Á ','À ','Ã ','Â ','É ','Ê ','Í ','Ó ','Ô ','Õ ','Ú ','Ü ','Ç ');
$text = str_replace($search, $replace, $text);
return $text;
}

  3. Re: special characters?   Reply   Report abuse  
Picture of Valmy Gomes Valmy Gomes - 2009-10-01 03:09:04 - In reply to message 1 from This is my name
Please, the correte custom function is this:

function specialtwitter ($text) {
$search = array('á','à','ã','â','é','ê','í','ó','ô','õ','ú','ü','ç','Á','À','Ã','Â','É','Ê','Í','Ó','Ô','Õ','Ú','Ü','Ç');
$replace = array('á ','à ','ã ','â ','é ','ê ','í ','ó ','ô ','õ ','ú ','ü ','ç ','Á ','À ','Ã ','Â ','É ','Ê ','Í ','Ó ','Ô ','Õ ','Ú ','Ü ','Ç ');
$text = str_replace($search, $replace, $text);
return urldecode($text);
}

Good Luck

  4. Re: special characters?   Reply   Report abuse  
Picture of This is my name This is my name - 2009-10-01 12:26:23 - In reply to message 3 from Valmy Gomes
Thankyou for your reply!

While you gave it up to me, I arrived to a similar conclusion as far as replacing characters goes.

I am replacing my literal accute characters with HTMLentities, which allows the class to successfully URLencode the accute characters.

So instead of replacing them with the unaccute versions of the character I am replacing like this:

$search = array('á','é''í','Á' ... );
$replace = array('á','é','í','Á');

For a listing of all html entities, see the following URL:
w3schools.com/tags/ref_entities.asp

My custom function is as follows:
function acutereplace($txt){
$find = array("/á/","/é/","/í/","/ó/","/ú/","/Á/","/É/","/Í/","/Ó/","/Ú/","/\.\.\./","/!/","/¡/","/ñ/","/Ñ/");
$replace = array("á","é","í","ó","ú","&Aacute","&Eacute","Í","Ó","Ú","","","","ñ","Ñ");
$txt = preg_replace($find,$replace,$txt);
return $txt;
}

Then I modified the update function as follows:
$post_data = "status=" . urlencode($this->acutereplace($new_status));

This worked perfectly and my tweets enjoy acute characters when I tweet content from my website.

Thanks again for your reply, I am sorry I did not update my question earlier... I had forgotten about it... :)

  5. Re: special characters?   Reply   Report abuse  
Picture of Thomas Omerzu Thomas Omerzu - 2010-03-22 17:09:21 - In reply to message 4 from This is my name
Twitter expects UTF-8 encoding for special characters.

Thus another possible solution is to replace

$post_data = "status=" . urlencode($new_status);

with

$post_data = "status=" . rawurlencode(mb_convert_encoding($new_status,"UTF-8","ISO-8859-1"));

where you might want to exchange "ISO-8859-1" with your local character set encoding.

  6. Re: special characters?   Reply   Report abuse  
Picture of Brunno dos Santos Brunno dos Santos - 2010-07-22 14:54:31 - In reply to message 5 from Thomas Omerzu
Thanks, this solution works to me xD