note 93552 added to function.sprintf

From: 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

« previous php.notes (#160600) next »