Hi there !
i'm trying to configure a twitter scheduled script and i having
problem to send accented char !
I know that i have to encode and utf8 encode before sending, and I do
it :
$status = urlencode(utf8_encode($status));
my request :
http://twitter.com/statuses/update
I'm using curl
The problem is that it is sending well the encoded value, but it
appears encoded on twitter...
here my code :
public function update( $status, $url = NULL, $replying_to = false )
{
$status = urlencode(utf8_encode($status));
if( !in_array( $this-type, array( 'xml','json' ) ) )
return false;
$request = 'http://twitter.com/statuses/update.' . $this-
type;
// If the status is more than 117 chars, it cut them
$status = $this-_cut($status);
// If a url is sent with the status, it go through a shorting
url
service
if( $url ) $shorturl = $this-_shorturl($url);
$postargs = array( 'status' = urlencode(utf8_encode($status.
$shorturl)) );
if( $replying_to )
$postargs['in_reply_to_status_id'] = (int) $replying_to;
return $this-_objectify( $this-_process($request, $postargs)
);
}
private function _process($url,$postargs=false)
{
$url = ( $this-suppress_response_code ) ? $url .
'suppress_response_code=true' : $url;
$ch = curl_init($url);
if($postargs !== false)
{
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt ($ch, CURLOPT_POSTFIELDS,$postargs);
}
if($this-_username !== false $this-_password !== false)
curl_setopt($ch, CURLOPT_USERPWD,
$this-_username.':'.$this-
_password );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_NOBODY, 0);
if( $this-debug ) :
curl_setopt($ch, CURLOPT_HEADER, true);
else :
curl_setopt($ch, CURLOPT_HEADER, false);
endif;
curl_setopt($ch, CURLOPT_USERAGENT, $this-user_agent);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $this-headers);
$response = curl_exec($ch);
$this-responseInfo=curl_getinfo($ch);
curl_close($ch);
if( $this-debug ) :
$debug = preg_split(#\n\s*\n|\r\n\s*\r\n#m, $response);
echo'pre' . $debug[0] . '/pre'; exit;
endif;
if( intval( $this-responseInfo['http_code'] ) == 200 )
return $response;
else
return false;
}