Files
@ c7d7e38b2269
Branch filter:
Location: hot67beta/libraries/joomla/utilities/string.php
c7d7e38b2269
12.3 KiB
text/x-php
Initial import of the site.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 | <?php
/**
* @version $Id: string.php 11399 2009-01-05 20:07:29Z kdevine $
* @package Joomla.Framework
* @subpackage Utilities
* @copyright Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
* @license GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
// Check to ensure this file is within the rest of the framework
defined('JPATH_BASE') or die();
/**
* PHP mbstring and iconv local configuration
*/
// check if mbstring extension is loaded and attempt to load it if not present except for windows
if (extension_loaded('mbstring') || ((!strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && dl('mbstring.so')))) {
//Make sure to surpress the output in case ini_set is disabled
@ini_set('mbstring.internal_encoding', 'UTF-8');
@ini_set('mbstring.http_input', 'UTF-8');
@ini_set('mbstring.http_output', 'UTF-8');
}
// same for iconv
if (function_exists('iconv') || ((!strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && dl('iconv.so')))) {
// these are settings that can be set inside code
iconv_set_encoding("internal_encoding", "UTF-8");
iconv_set_encoding("input_encoding", "UTF-8");
iconv_set_encoding("output_encoding", "UTF-8");
}
/**
* Include the utf8 package
*/
require_once(JPATH_LIBRARIES.DS.'phputf8'.DS.'utf8.php');
/**
* String handling class for utf-8 data
* Wraps the phputf8 library
* All functions assume the validity of utf-8 strings.
*
* @static
* @package Joomla.Framework
* @subpackage Utilities
* @since 1.5
*/
class JString
{
/**
* UTF-8 aware alternative to strpos
* Find position of first occurrence of a string
*
* @static
* @access public
* @param $str - string String being examined
* @param $search - string String being searced for
* @param $offset - int Optional, specifies the position from which the search should be performed
* @return mixed Number of characters before the first match or FALSE on failure
* @see http://www.php.net/strpos
*/
function strpos($str, $search, $offset = FALSE)
{
if ( $offset === FALSE ) {
return utf8_strpos($str, $search);
} else {
return utf8_strpos($str, $search, $offset);
}
}
/**
* UTF-8 aware alternative to strrpos
* Finds position of last occurrence of a string
*
* @static
* @access public
* @param $str - string String being examined
* @param $search - string String being searced for
* @return mixed Number of characters before the last match or FALSE on failure
* @see http://www.php.net/strrpos
*/
function strrpos($str, $search){
return utf8_strrpos($str, $search);
}
/**
* UTF-8 aware alternative to substr
* Return part of a string given character offset (and optionally length)
*
* @static
* @access public
* @param string
* @param integer number of UTF-8 characters offset (from left)
* @param integer (optional) length in UTF-8 characters from offset
* @return mixed string or FALSE if failure
* @see http://www.php.net/substr
*/
function substr($str, $offset, $length = FALSE)
{
if ( $length === FALSE ) {
return utf8_substr($str, $offset);
} else {
return utf8_substr($str, $offset, $length);
}
}
/**
* UTF-8 aware alternative to strtlower
* Make a string lowercase
* Note: The concept of a characters "case" only exists is some alphabets
* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does
* not exist in the Chinese alphabet, for example. See Unicode Standard
* Annex #21: Case Mappings
*
* @access public
* @param string
* @return mixed either string in lowercase or FALSE is UTF-8 invalid
* @see http://www.php.net/strtolower
*/
function strtolower($str){
return utf8_strtolower($str);
}
/**
* UTF-8 aware alternative to strtoupper
* Make a string uppercase
* Note: The concept of a characters "case" only exists is some alphabets
* such as Latin, Greek, Cyrillic, Armenian and archaic Georgian - it does
* not exist in the Chinese alphabet, for example. See Unicode Standard
* Annex #21: Case Mappings
*
* @access public
* @param string
* @return mixed either string in uppercase or FALSE is UTF-8 invalid
* @see http://www.php.net/strtoupper
*/
function strtoupper($str){
return utf8_strtoupper($str);
}
/**
* UTF-8 aware alternative to strlen
* Returns the number of characters in the string (NOT THE NUMBER OF BYTES),
*
* @access public
* @param string UTF-8 string
* @return int number of UTF-8 characters in string
* @see http://www.php.net/strlen
*/
function strlen($str){
return utf8_strlen($str);
}
/**
* UTF-8 aware alternative to str_ireplace
* Case-insensitive version of str_replace
*
* @static
* @access public
* @param string string to search
* @param string existing string to replace
* @param string new string to replace with
* @param int optional count value to be passed by referene
* @see http://www.php.net/str_ireplace
*/
function str_ireplace($search, $replace, $str, $count = NULL)
{
jimport('phputf8.str_ireplace');
if ( $count === FALSE ) {
return utf8_ireplace($search, $replace, $str);
} else {
return utf8_ireplace($search, $replace, $str, $count);
}
}
/**
* UTF-8 aware alternative to str_split
* Convert a string to an array
*
* @static
* @access public
* @param string UTF-8 encoded
* @param int number to characters to split string by
* @return array
* @see http://www.php.net/str_split
*/
function str_split($str, $split_len = 1)
{
jimport('phputf8.str_split');
return utf8_str_split($str, $split_len);
}
/**
* UTF-8 aware alternative to strcasecmp
* A case insensivite string comparison
*
* @static
* @access public
* @param string string 1 to compare
* @param string string 2 to compare
* @return int < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal.
* @see http://www.php.net/strcasecmp
*/
function strcasecmp($str1, $str2)
{
jimport('phputf8.strcasecmp');
return utf8_strcasecmp($str1, $str2);
}
/**
* UTF-8 aware alternative to strcspn
* Find length of initial segment not matching mask
*
* @static
* @access public
* @param string
* @param string the mask
* @param int Optional starting character position (in characters)
* @param int Optional length
* @return int the length of the initial segment of str1 which does not contain any of the characters in str2
* @see http://www.php.net/strcspn
*/
function strcspn($str, $mask, $start = NULL, $length = NULL)
{
jimport('phputf8.strcspn');
if ( $start === FALSE && $length === FALSE ) {
return utf8_strcspn($str, $mask);
} else if ( $length === FALSE ) {
return utf8_strcspn($str, $mask, $start);
} else {
return utf8_strcspn($str, $mask, $start, $length);
}
}
/**
* UTF-8 aware alternative to stristr
* Returns all of haystack from the first occurrence of needle to the end.
* needle and haystack are examined in a case-insensitive manner
* Find first occurrence of a string using case insensitive comparison
*
* @static
* @access public
* @param string the haystack
* @param string the needle
* @return string the sub string
* @see http://www.php.net/stristr
*/
function stristr($str, $search)
{
jimport('phputf8.stristr');
return utf8_stristr($str, $search);
}
/**
* UTF-8 aware alternative to strrev
* Reverse a string
*
* @static
* @access public
* @param string String to be reversed
* @return string The string in reverse character order
* @see http://www.php.net/strrev
*/
function strrev($str)
{
jimport('phputf8.strrev');
return utf8_strrev($str);
}
/**
* UTF-8 aware alternative to strspn
* Find length of initial segment matching mask
*
* @static
* @access public
* @param string the haystack
* @param string the mask
* @param int start optional
* @param int length optional
* @see http://www.php.net/strspn
*/
function strspn($str, $mask, $start = NULL, $length = NULL)
{
jimport('phputf8.strspn');
if ( $start === FALSE && $length === FALSE ) {
return utf8_strspn($str, $mask);
} else if ( $length === FALSE ) {
return utf8_strspn($str, $mask, $start);
} else {
return utf8_strspn($str, $mask, $start, $length);
}
}
/**
* UTF-8 aware substr_replace
* Replace text within a portion of a string
*
* @static
* @access public
* @param string the haystack
* @param string the replacement string
* @param int start
* @param int length (optional)
* @see http://www.php.net/substr_replace
*/
function substr_replace($str, $repl, $start, $length = NULL )
{
// loaded by library loader
if ( $length === FALSE ) {
return utf8_substr_replace($str, $repl, $start);
} else {
return utf8_substr_replace($str, $repl, $start, $length);
}
}
/**
* UTF-8 aware replacement for ltrim()
* Strip whitespace (or other characters) from the beginning of a string
* Note: you only need to use this if you are supplying the charlist
* optional arg and it contains UTF-8 characters. Otherwise ltrim will
* work normally on a UTF-8 string
*
* @static
* @access public
* @param string the string to be trimmed
* @param string the optional charlist of additional characters to trim
* @return string the trimmed string
* @see http://www.php.net/ltrim
*/
function ltrim( $str, $charlist = FALSE )
{
jimport('phputf8.trim');
if ( $charlist === FALSE ) {
return utf8_ltrim( $str );
} else {
return utf8_ltrim( $str, $charlist );
}
}
/**
* UTF-8 aware replacement for rtrim()
* Strip whitespace (or other characters) from the end of a string
* Note: you only need to use this if you are supplying the charlist
* optional arg and it contains UTF-8 characters. Otherwise rtrim will
* work normally on a UTF-8 string
*
* @static
* @access public
* @param string the string to be trimmed
* @param string the optional charlist of additional characters to trim
* @return string the trimmed string
* @see http://www.php.net/rtrim
*/
function rtrim( $str, $charlist = FALSE )
{
jimport('phputf8.trim');
if ( $charlist === FALSE ) {
return utf8_rltrim( $str );
} else {
return utf8_rtrim( $str, $charlist );
}
}
/**
* UTF-8 aware replacement for trim()
* Strip whitespace (or other characters) from the beginning and end of a string
* Note: you only need to use this if you are supplying the charlist
* optional arg and it contains UTF-8 characters. Otherwise trim will
* work normally on a UTF-8 string
*
* @static
* @access public
* @param string the string to be trimmed
* @param string the optional charlist of additional characters to trim
* @return string the trimmed string
* @see http://www.php.net/trim
*/
function trim( $str, $charlist = FALSE )
{
jimport('phputf8.trim');
if ( $charlist === FALSE ) {
return utf8_trim( $str );
} else {
return utf8_trim( $str, $charlist );
}
}
/**
* UTF-8 aware alternative to ucfirst
* Make a string's first character uppercase
*
* @static
* @access public
* @param string
* @return string with first character as upper case (if applicable)
* @see http://www.php.net/ucfirst
*/
function ucfirst($str)
{
jimport('phputf8.ucfirst');
return utf8_ucfirst($str);
}
/**
* UTF-8 aware alternative to ucwords
* Uppercase the first character of each word in a string
*
* @static
* @access public
* @param string
* @return string with first char of each word uppercase
* @see http://www.php.net/ucwords
*/
function ucwords($str)
{
jimport('phputf8.ucwords');
return utf8_ucwords($str);
}
/**
* Transcode a string.
*
* @static
* @param string $source The string to transcode.
* @param string $from_encoding The source encoding.
* @param string $to_encoding The target encoding.
* @return string Transcoded string
* @since 1.5
*/
function transcode($source, $from_encoding, $to_encoding) {
if (is_string($source)) {
/*
* "//TRANSLIT" is appendd to the $to_encoding to ensure that when iconv comes
* across a character that cannot be represented in the target charset, it can
* be approximated through one or several similarly looking characters.
*/
return iconv($from_encoding, $to_encoding.'//TRANSLIT', $source);
}
}
}
|