note 93552 added to function.sprintf
| From: | Astone at osu1 dot php dot net | Date: | Wed, 16 Sep 2009 06:41:45 +0000 |
| Subject: | note 93552 added to function.sprintf | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-160600@lists.php.net to get a copy of this message | ||
When you're using Google translator, you have to 'escape' the 'conversion
specifications' by putting <span class="notranslate"></span> around them.
Like this:
<?php
function getGoogleTranslation($sString, $bEscapeParams = true)
{
// "escape" sprintf paramerters
if ($bEscapeParams)
{
$sPatern = '/(?:%%|%(?:[0-9]+\$)?[+-]?(?:[
0]|\'.)?-?[0-9]*(?:\.[0-9]+)?[bcdeufFosxX])/';
$sEscapeString = '<span class="notranslate">$0</span>';
$sString = preg_replace($sPatern, $sEscapeString, $sString);
}
// Compose data array (English to Dutch)
$aData = array(
'v' => '1.0',
'q' => $sString,
'langpair' => 'en|nl',
);
// Initialize connection
$rService = curl_init();
// Connection settings
curl_setopt($rService, CURLOPT_URL, 'http://ajax.googleapis.com/ajax/services/language/translate');
curl_setopt($rService, CURLOPT_RETURNTRANSFER, true);
curl_setopt($rService, CURLOPT_POSTFIELDS, $aData);
// Execute request
$sResponse = curl_exec($rService);
// Close connection
curl_close($rService);
// Extract text from JSON response
$oResponse = json_decode($sResponse);
if (isset($oResponse->responseData->translatedText))
{
$sTranslation = $oResponse->responseData->translatedText;
}
else
{
// If some error occured, use the original string
$sTranslation = $sString;
}
// Replace "notranslate" tags
if ($bEscapeParams)
{
$sEscapePatern = '/<span class="notranslate">([^<]*)<\/span>/';
$sTranslation = preg_replace($sEscapePatern, '$1', $sTranslation);
}
// Return result
return $sTranslation;
}
?>
Thanks to MelTraX for defining the RegExp!
----
Server IP: 213.249.64.162
Probable Submitter: 82.170.159.231
----
Manual Page -- http://www.php.net/manual/en/function.sprintf.php
Edit -- https://master.php.net/note/edit/93552
Del: integrated -- https://master.php.net/note/delete/93552/integrated
Del: useless -- https://master.php.net/note/delete/93552/useless
Del: bad code -- https://master.php.net/note/delete/93552/bad+code
Del: spam -- https://master.php.net/note/delete/93552/spam
Del: non-english -- https://master.php.net/note/delete/93552/non-english
Del: in docs -- https://master.php.net/note/delete/93552/in+docs
Del: other reasons-- https://master.php.net/note/delete/93552
Reject -- https://master.php.net/note/reject/93552
Search -- https://master.php.net/manage/user-notes.php