userError('Query string is not UTF-8 encoded.');
}
- // Conflicts between US state abreviations and various words for 'the' in different languages
- if (isset($this->aLangPrefOrder['name:en'])) {
- $sQuery = preg_replace('/(^|,)\s*il\s*(,|$)/i', '\1illinois\2', $sQuery);
- $sQuery = preg_replace('/(^|,)\s*al\s*(,|$)/i', '\1alabama\2', $sQuery);
- $sQuery = preg_replace('/(^|,)\s*la\s*(,|$)/i', '\1louisiana\2', $sQuery);
- }
-
// Do we have anything that looks like a lat/lon pair?
$sQuery = $oCtx->setNearPointFromQuery($sQuery);
*/
class Phrase
{
- // Complete phrase as a string.
+ // Complete phrase as a string (guaranteed to have no leading or trailing
+ // spaces).
private $sPhrase;
// Element type for structured searches.
private $sPhraseType;
$sNormQuery .= ','.$this->normalizeString($oPhrase->getPhrase());
$sSQL .= 'make_standard_name(:' .$iPhrase.') as p'.$iPhrase.',';
$aParams[':'.$iPhrase] = $oPhrase->getPhrase();
+
+ // Conflicts between US state abbreviations and various words
+ // for 'the' in different languages
+ switch (strtolower($oPhrase->getPhrase())) {
+ case 'il':
+ $aParams[':'.$iPhrase] = 'illinois';
+ break;
+ case 'al':
+ $aParams[':'.$iPhrase] = 'alabama';
+ break;
+ case 'la':
+ $aParams[':'.$iPhrase] = 'louisiana';
+ break;
+ default:
+ $aParams[':'.$iPhrase] = $oPhrase->getPhrase();
+ break;
+ }
}
$sSQL = substr($sSQL, 0, -1);