Overview

Packages

  • admin
  • classes
    • media
  • CodeIgniter
    • Libraries
  • core
  • functions
  • JSMin
  • None
  • OpenID
  • PHP
  • PHPMailer
  • plugins
    • admin
    • development
    • feed
    • mail
    • media
    • misc
    • seo
    • spam
    • uploader
    • users
    • zenpage
    • zenphoto
      • news
  • Services
    • JSON

Classes

  • _zp_captcha
  • _zp_HTML_cache
  • admin_approval
  • Album
  • AlbumBase
  • AlbumZip
  • AMFReader
  • AMFStream
  • AnyFile
  • AnyFile_Options
  • Auth_OpenID
  • Auth_OpenID_AlreadySigned
  • Auth_OpenID_AssociateRequest
  • Auth_OpenID_Association
  • Auth_OpenID_AuthRequest
  • Auth_OpenID_AX
  • Auth_OpenID_AX_AttrInfo
  • Auth_OpenID_AX_Error
  • Auth_OpenID_AX_FetchRequest
  • Auth_OpenID_AX_FetchResponse
  • Auth_OpenID_AX_KeyValueMessage
  • Auth_OpenID_AX_Message
  • Auth_OpenID_AX_StoreRequest
  • Auth_OpenID_AX_StoreResponse
  • Auth_OpenID_BcMathWrapper
  • Auth_OpenID_CancelResponse
  • Auth_OpenID_CheckAuthRequest
  • Auth_OpenID_CheckIDRequest
  • Auth_OpenID_Consumer
  • Auth_OpenID_ConsumerResponse
  • Auth_OpenID_CryptUtil
  • Auth_OpenID_DatabaseConnection
  • Auth_OpenID_Decoder
  • Auth_OpenID_DiffieHellman
  • Auth_OpenID_DiffieHellmanSHA1ConsumerSession
  • Auth_OpenID_DiffieHellmanSHA1ServerSession
  • Auth_OpenID_DiffieHellmanSHA256ConsumerSession
  • Auth_OpenID_DiffieHellmanSHA256ServerSession
  • Auth_OpenID_DumbStore
  • Auth_OpenID_Encoder
  • Auth_OpenID_EncodingError
  • Auth_OpenID_Extension
  • Auth_OpenID_FailureResponse
  • Auth_OpenID_FileStore
  • Auth_OpenID_GenericConsumer
  • Auth_OpenID_GmpMathWrapper
  • Auth_OpenID_KVForm
  • Auth_OpenID_MalformedReturnURL
  • Auth_OpenID_MalformedTrustRoot
  • Auth_OpenID_Mapping
  • Auth_OpenID_MathLibrary
  • Auth_OpenID_MDB2Store
  • Auth_OpenID_MemcachedStore
  • Auth_OpenID_Message
  • Auth_OpenID_MySQLStore
  • Auth_OpenID_NamespaceMap
  • Auth_OpenID_NoReturnToError
  • Auth_OpenID_OpenIDStore
  • Auth_OpenID_PAPE_Request
  • Auth_OpenID_PAPE_Response
  • Auth_OpenID_Parse
  • Auth_OpenID_PlainTextConsumerSession
  • Auth_OpenID_PlainTextServerSession
  • Auth_OpenID_PostgreSQLStore
  • Auth_OpenID_Request
  • Auth_OpenID_Server
  • Auth_OpenID_ServerError
  • Auth_OpenID_ServerErrorContainer
  • Auth_OpenID_ServerRequest
  • Auth_OpenID_ServerResponse
  • Auth_OpenID_ServiceEndpoint
  • Auth_OpenID_ServiceEndpointLoader
  • Auth_OpenID_SessionNegotiator
  • Auth_OpenID_SetupNeededResponse
  • Auth_OpenID_Signatory
  • Auth_OpenID_SigningEncoder
  • Auth_OpenID_SQLiteStore
  • Auth_OpenID_SQLStore
  • Auth_OpenID_SRegBase
  • Auth_OpenID_SRegRequest
  • Auth_OpenID_SRegResponse
  • Auth_OpenID_SuccessResponse
  • Auth_OpenID_TrustRoot
  • Auth_OpenID_TypeURIMismatch
  • Auth_OpenID_UntrustedReturnURL
  • Auth_OpenID_WebResponse
  • Auth_Yadis_Discovery
  • Auth_Yadis_DiscoveryResult
  • Auth_Yadis_dom
  • Auth_Yadis_domxml
  • Auth_Yadis_HTTPFetcher
  • Auth_Yadis_HTTPResponse
  • Auth_Yadis_Manager
  • Auth_Yadis_ManagerLoader
  • Auth_Yadis_ParanoidHTTPFetcher
  • Auth_Yadis_ParseHTML
  • Auth_Yadis_PHPSession
  • Auth_Yadis_PlainHTTPFetcher
  • Auth_Yadis_ProxyResolver
  • Auth_Yadis_Service
  • Auth_Yadis_SessionLoader
  • Auth_Yadis_XMLParser
  • Auth_Yadis_XRDS
  • Auth_Yadis_Yadis
  • auto_backup
  • AVCSequenceParameterSetReader
  • bxslider
  • cacheManager
  • cacheManagerFeed
  • CI_jsmin
  • CI_load
  • cloneZenphoto
  • codeIgniter_kludge
  • colorbox
  • Comment
  • comment_form
  • contactformOptions
  • crop_image
  • cycle
  • defaultCodeblocks
  • deprecated_functions
  • DownloadList
  • dynamic_locale
  • dynamicAlbum
  • elFinder_options
  • email_new_user
  • exampleMacros
  • external_auth
  • ExternalFeed
  • externalFeed_options
  • favorites
  • favoritesOptions
  • federated_logon
  • feed
  • fieldExtender
  • flag_thumbnail
  • Gallery
  • galleryArticles
  • getID3
  • getid3_aac
  • getid3_apetag
  • getid3_flv
  • getid3_handler
  • getid3_id3v1
  • getid3_id3v2
  • getid3_lib
  • getid3_lyrics3
  • getid3_mp3
  • getid3_mpeg
  • getid3_quicktime
  • getid3_swf
  • GoogleMap
  • Googlemaps
  • googleVerifyOptions
  • hitcounter
  • HTML
  • htmlmetatags
  • http_auth
  • Image
  • image_effects
  • internal_deprecations
  • ipBlocker
  • jcarousel
  • jPlayer
  • jplayer_options
  • jquery_rating
  • JSMin
  • lib_GD_Options
  • lib_Imagick_Options
  • lib_NoGraphics
  • MediaObject
  • menu_manager
  • MergedRSS
  • MergedRSSOptions
  • mobile
  • Mobile_Detect
  • mobileTheme
  • multipleLayoutOptions
  • null_seo
  • OAuthConsumer
  • OAuthDataStore
  • OAuthRequest
  • OAuthServer
  • OAuthSignatureMethod
  • OAuthSignatureMethod_HMAC_SHA1
  • OAuthSignatureMethod_PLAINTEXT
  • OAuthSignatureMethod_RSA_SHA1
  • OAuthToken
  • OAuthUtil
  • pagedThumbsNav
  • pagedthumbsOptions
  • PclZip
  • PersistentObject
  • PHPMailer
  • PlainText
  • POP3
  • print_album_menu
  • pseudoPlayer
  • publishContent
  • quota_manager
  • reCaptcha
  • ReCaptchaResponse
  • register_user
  • rewriteRules
  • rewriteTokens
  • RSS
  • RSS_internal_deprecations
  • rss_options
  • search_statistics
  • SearchEngine
  • security_logger
  • seo_locale
  • Services_JSON
  • Services_JSON_Error
  • setupexternalFeed
  • setupRSS
  • show_not_loggedin
  • sitemap
  • slideshow
  • SMTP
  • static_html_cache
  • tagsuggest
  • TextObject
  • TextObject_internal_deprecations
  • TextObject_Options
  • ThemeObject
  • themeSwitcher
  • tinymce4Options
  • tinyURL
  • Transientimage
  • tweet
  • TwitterOAuth
  • UploadHandler
  • user_expiry
  • user_groups
  • user_logout_options
  • userAddressFields
  • utf8
  • Video
  • Video_internal_deprecations
  • VideoObject_Options
  • viewer_size_image_options
  • WEBdocs
  • WEBdocs_Options
  • xmpMetadata
  • Zenpage
  • Zenpage_internal_deprecations
  • ZenpageCategory
  • zenpagecms
  • ZenpageItems
  • ZenpageNews
  • ZenpagePage
  • ZenpageRoot
  • Zenphoto_Administrator
  • Zenphoto_Authority
  • zenphoto_org_news
  • zenphoto_seo
  • zenphotoDonate
  • ZipStream
  • zp_PHPMailer
  • zpCaptcha
  • zpFunctions
  • zpLegacySpam
  • zpMutex
  • zpSimpleSpam
  • zpTrivialSpam

Exceptions

  • BadFunctionCallException
  • BadMethodCallException
  • Exception
  • getid3_exception
  • JSMin_UnterminatedCommentException
  • JSMin_UnterminatedRegExpException
  • JSMin_UnterminatedStringException
  • LogicException
  • OAuthExcept
  • phpmailerException

Functions

  • __autoload
  • _escape_xref
  • _recaptcha_aes_encrypt
  • _recaptcha_aes_pad
  • _recaptcha_http_post
  • _recaptcha_mailhide_email_parts
  • _recaptcha_mailhide_urlbase64
  • _recaptcha_qsencode
  • accessAllAlbums
  • add_context
  • addalbumsToDatabase
  • addCategoriesToDatabase
  • addGeoCoord
  • addItem
  • addPagesToDatabase
  • addPluginScript
  • addPluginType
  • addSubalbumMenus
  • admin_album_list
  • admin_securityChecks
  • admin_showupdate
  • adminPageNav
  • adminToolbox
  • albumNumber
  • applyMacros
  • Auth_OpenID_arrangeByType
  • Auth_OpenID_AX_checkAlias
  • Auth_OpenID_AX_toTypeURIs
  • Auth_OpenID_bestMatchingService
  • Auth_OpenID_checkFieldName
  • Auth_OpenID_checkSessionType
  • Auth_OpenID_checkTimestamp
  • Auth_OpenID_detectMathLibrary
  • Auth_OpenID_discover
  • Auth_OpenID_discoverURI
  • Auth_OpenID_discoverWithoutYadis
  • Auth_OpenID_discoverWithYadis
  • Auth_OpenID_discoverXRI
  • Auth_OpenID_extractReturnURL
  • Auth_OpenID_findOPLocalIdentifier
  • Auth_OpenID_getAllAssociationTypes
  • Auth_OpenID_getAllowedReturnURLs
  • Auth_OpenID_getAuthorityPattern
  • Auth_OpenID_getAvailableSessionTypes
  • Auth_OpenID_getDefaultAssociationOrder
  • Auth_OpenID_getDefaultGen
  • Auth_OpenID_getDefaultMod
  • Auth_OpenID_getDefaultNegotiator
  • Auth_OpenID_getEncodedPattern
  • Auth_OpenID_getEncryptedNegotiator
  • Auth_OpenID_getEscapeRE
  • Auth_OpenID_getMathLib
  • Auth_OpenID_getOnlyEncryptedOrder
  • Auth_OpenID_getOpenIDConsumerTypeURIs
  • Auth_OpenID_getOpenIDTypeName
  • Auth_OpenID_getOpenIDTypeURIs
  • Auth_OpenID_getOPOrUserServices
  • Auth_OpenID_getSecretSize
  • Auth_OpenID_getSessionTypes
  • Auth_OpenID_getSupportedAssociationTypes
  • Auth_OpenID_getUnreserved
  • Auth_OpenID_getURIPattern
  • Auth_OpenID_getURLIllegalCharRE
  • Auth_OpenID_HMACSHA1
  • Auth_OpenID_HMACSHA256
  • Auth_OpenID_include_init
  • Auth_OpenID_isError
  • Auth_OpenID_isOpenID1
  • Auth_OpenID_legacy_discover
  • Auth_OpenID_makeOpenIDEndpoints
  • Auth_OpenID_math_extensions
  • Auth_OpenID_mkNonce
  • Auth_OpenID_noMathSupport
  • Auth_OpenID_pct_encoded_replace
  • Auth_OpenID_pct_encoded_replace_unreserved
  • Auth_OpenID_registerNamespaceAlias
  • Auth_OpenID_remove_dot_segments
  • Auth_OpenID_removeNamespaceAlias
  • Auth_OpenID_returnToMatches
  • Auth_OpenID_setNoMathSupport
  • Auth_OpenID_SHA1
  • Auth_OpenID_SHA256
  • Auth_OpenID_splitNonce
  • Auth_OpenID_supportsSReg
  • Auth_OpenID_urinorm
  • Auth_OpenID_verifyReturnTo
  • Auth_Yadis_array_scramble
  • Auth_Yadis_escapeForIRI
  • Auth_Yadis_getCanonicalID
  • Auth_Yadis_getDefaultProxy
  • Auth_Yadis_getEscapeRE
  • Auth_Yadis_getIPrivateChars
  • Auth_Yadis_getNSMap
  • Auth_Yadis_getServiceEndpoints
  • Auth_Yadis_getSupportedExtensions
  • Auth_Yadis_getUCSChars
  • Auth_Yadis_getXMLParser
  • Auth_Yadis_getXRDExpiration
  • Auth_Yadis_getXrefRE
  • Auth_Yadis_getXRIAuthorities
  • Auth_Yadis_identifierScheme
  • Auth_Yadis_iriToURI
  • Auth_Yadis_pct_escape_unicode
  • Auth_Yadis_providerIsAuthoritative
  • Auth_Yadis_rootAuthority
  • Auth_Yadis_setDefaultParser
  • Auth_Yadis_startswith
  • Auth_Yadis_toIRINormal
  • Auth_Yadis_toURINormal
  • Auth_Yadis_XRI
  • Auth_Yadis_XRIAppendArgs
  • authorSelector
  • build_query
  • build_url
  • bulkActionRedirect
  • bulkTags
  • byteConvert
  • cacheImage
  • checkAccess
  • checkAlbumimagesort
  • checkAlbumParentid
  • checkAlbumPassword
  • checkChosenItemStatus
  • checkChosenMenuset
  • checked
  • checkFolder
  • checkForEmptyTitle
  • checkForGuest
  • checkForPage
  • checkForPassword
  • checkForUpdate
  • checkHitcounterDisplay
  • checkIfChecked
  • checkIfLockedNews
  • checkIfLockedPage
  • checkIfNew
  • checkInstall
  • checkLayoutUseForImages
  • checkNewsAccess
  • checkNewsCategoryPassword
  • checkObjectsThumb
  • checkPagePassword
  • checkPageValidity
  • checkParentLayouts
  • checkPublishDates
  • checkRequiredField
  • checkSelectedAlbum
  • checkSignature
  • cleanAlbum
  • cleanHTML
  • clearSitemapCache
  • clonedFrom
  • codeblocktabsJS
  • comment_form_addComment
  • comment_form_handle_comment
  • comment_form_PaginationJS
  • comment_form_postcomment
  • comment_form_print10Most
  • comment_form_visualEditor
  • commentFormUseCaptcha
  • commentReply
  • commentsAllowed
  • consolidatedEditMessages
  • copyLayoutSelection
  • copyThemeDirectory
  • countArticles
  • countCombiNews
  • createMenuIfNotExists
  • createRelatedItemsResultArray
  • cron_starter
  • currentRelativeURL
  • customOptions
  • dateDiff
  • datepickerJS
  • dateTimeConvert
  • db_affected_rows
  • db_close
  • db_collation
  • db_connect
  • db_count
  • db_create
  • db_create_table
  • db_error
  • db_fetch_assoc
  • db_fetch_row
  • db_free_result
  • db_getSQLmode
  • db_insert_id
  • db_LIKE_escape
  • db_list_fields
  • db_name
  • db_num_rows
  • db_permissions
  • db_quote
  • db_setSQLmode
  • db_show
  • db_software
  • db_table_update
  • db_truncate_table
  • debug404
  • debugLog
  • debugLogBacktrace
  • debugLogVar
  • defaultCodeblocks_codebox
  • deleteArticle
  • deleteCategory
  • deleteItem
  • deleteLayoutSelection
  • deletePage
  • deleteThemeDirectory
  • detect_fetcher
  • detect_math
  • detect_query_corruption
  • detect_random
  • detect_stores
  • detect_xml
  • dircopy
  • displayError
  • doIncludes
  • elFinder_admin_tabs
  • elFinder_tinymce
  • enableExtension
  • escape
  • executeRSS
  • exitZP
  • exposeZenPhotoInformations
  • extensionEnabled
  • fetchComments
  • filesystemToInternal
  • filter_extractReturnURL
  • filter_MatchesAnyOpenIDConsumerType
  • filter_MatchesAnyOpenIDType
  • filterImageQuery
  • fix_path_redirect
  • formatList
  • fullText
  • galleryAlbumsPerPage
  • genAlbumList
  • generateCaptcha
  • generateLanguageList
  • generateListFromArray
  • generateListFromFiles
  • generateRadiobuttonsFromArray
  • generateSitemapCacheFile
  • generateSitemapIndexCacheFile
  • generateUnorderedListFromArray
  • get_AnyFile_suffixes
  • get_context
  • get_filterScript
  • get_instance
  • get_language_string
  • getAdminThumb
  • getAlbumArray
  • getAlbumBreadcrumb
  • getAlbumBreadcrumbAdmin
  • getAlbumCustomData
  • getAlbumData
  • getAlbumDate
  • getAlbumDesc
  • getAlbumFolder
  • getAlbumGeodata
  • getAlbumId
  • getAlbumInherited
  • getAlbumLinkURL
  • getAlbumLocation
  • getAlbumPage
  • getAlbumPlace
  • getAlbumStatistic
  • getAlbumThumb
  • getAlbumTitle
  • getAlbumURL
  • getAllAccessibleAlbums
  • getAllAlbums
  • getAllArticleDates
  • getAllCategories
  • getAllDates
  • getAllowedTags
  • getAllSubAlbumIDs
  • getAllSubalbums
  • getAllTagsCount
  • getAllTagsFromAlbum
  • getAllTagsFromAlbum_multi_unique
  • getAllTagsFromZenpage
  • getAllTagsUnique
  • getAllTranslations
  • getAnnotatedAlbumTitle
  • getAnnotatedImageTitle
  • getArticles
  • getAuthor
  • getBare
  • getBareAlbumDesc
  • getBareAlbumTitle
  • getBareGalleryDesc
  • getBareGalleryTitle
  • getBareImageDesc
  • getBareImageTitle
  • getBareNewsAlbumTitle
  • getBareNewsTitle
  • getBarePageTitle
  • getCategory
  • getCategoryID
  • getCategoryLink
  • getCategoryParentID
  • getCategorySortOrder
  • getCategoryTitle
  • getCheckboxState
  • getCodeblock
  • getCombiNews
  • getCommentAddress
  • getCommentAuthorEmail
  • getCommentAuthorLink
  • getCommentAuthorName
  • getCommentAuthorSite
  • getCommentBody
  • getCommentCount
  • getCommentDate
  • getCommentDateTime
  • getCommentErrors
  • getCommentsAllowed
  • getCommentStored
  • getCommentTime
  • getConsumer
  • getContentShorten
  • getCurrentMenuItem
  • getCurrentNewsArchive
  • getCurrentNewsCategory
  • getCurrentNewsCategoryID
  • getCurrentNewsCategoryParentID
  • getCurrentNewsPage
  • getCurrentPage
  • getCurrentTheme
  • getCustomAlbumThumb
  • getCustomAlbumThumbMaxSpace
  • getCustomImageURL
  • getCustomPageURL
  • getCustomSizedImageMaxSpace
  • getCustomSizedImageThumbMaxSpace
  • getDefaultHeight
  • getDefaultSizedImage
  • getDefaultWidth
  • getDownloadLink
  • getdownloadList
  • getDownloadURL
  • getE
  • getEnabledPlugins
  • getExpiryDatePost
  • getFavoritesURL
  • getField
  • getFirstImageURL
  • getFullHeight
  • getFullImageURL
  • getFullNewsImage
  • getFullWidth
  • getGalleryDesc
  • getGalleryIndexURL
  • getGalleryTitle
  • getGeoCoord
  • getHeadTitle
  • getHitcounter
  • getImageArgs
  • getImageCacheFilename
  • getImageCachePostfix
  • getImageCity
  • getImageCountry
  • getImageCustomData
  • getImageData
  • getImageDate
  • getImageDesc
  • getImageEXIFData
  • getImageGeodata
  • getImageID
  • getImageLinkURL
  • getImageLocation
  • getImageMetaData
  • getImageParameters
  • getImageProcessorURI
  • getImageProcessorURIFromCacheName
  • getImageRotation
  • getImageSortOrder
  • getImageState
  • getImageStatistic
  • getImageThumb
  • getImageTitle
  • getImageURI
  • getImageURL
  • getItem
  • getItemByID
  • getItemTitleAndURL
  • getjPlayerSkinCSS
  • getjPlayerSkins
  • getLanguageArray
  • getLanguageFlag
  • getLastImageURL
  • getLatestComments
  • getLatestNews
  • getLatestZenpageComments
  • getLayout
  • getLayoutSelector
  • getLink
  • getLinkHTML
  • getLogTabs
  • getMacros
  • getMainSiteName
  • getMainSiteURL
  • getManagedAlbumList
  • getMaxSpaceContainer
  • getMenuFromLink
  • getMenuItemChilds
  • getMenuItems
  • getMenumanagerPredicessor
  • getMenumanagerSuccessor
  • getMenuSetSelector
  • getMenuVisibility
  • getMimeString
  • getNestedAlbumList
  • getNewsAdminOption
  • getNewsAdminOptionPath
  • getNewsAlbumName
  • getNewsAlbumTitle
  • getNewsAlbumURL
  • getNewsArchivePath
  • getNewsArchiveURL
  • getNewsAuthor
  • getNewsCategories
  • getNewsCategoryCustomData
  • getNewsCategoryDesc
  • getNewsCategoryPath
  • getNewsCategoryURL
  • getNewsContent
  • getNewsContentShorten
  • getNewsCustomData
  • getNewsDate
  • getNewsExtraContent
  • getNewsID
  • getNewsImageTags
  • getNewsIndexURL
  • getNewsLink
  • getNewsPagesStatistic
  • getNewsPathNav
  • getNewsReadMore
  • getNewsTitle
  • getNewsTitleLink
  • getNewsTitlePath
  • getNewsType
  • getNewsURL
  • getNewsVideoContent
  • getNextAlbum
  • getNextAlbumURL
  • getNextImageThumb
  • getNextImageURL
  • getNextNewsPageURL
  • getNextNewsURL
  • getNextPageURL
  • getNextPrevNews
  • getNotViewableAlbums
  • getNotViewableImages
  • getNumAlbums
  • getNumAllSubalbums
  • getNumImages
  • getNumNews
  • getNumPages
  • getNumSubalbums
  • getOpenIDURL
  • getOption
  • getOptionFromDB
  • getOptionList
  • getPageAuthor
  • getPageContent
  • getPageCustomData
  • getPageDate
  • getPageExtraContent
  • getPageID
  • getPageLastChangeDate
  • getPageLinkPath
  • getPageLinkURL
  • getPageNavList
  • getPageNumURL
  • getPageParentID
  • getPageRedirect
  • getPages
  • getPageSelector
  • getPageSortorder
  • getPageTitle
  • getPageTitleLink
  • getPageURL
  • getParentAlbums
  • getParentAlbumsAdmin
  • getParentBreadcrumb
  • getParentItems
  • getParentMenuItems
  • getParentNewsCategories
  • getParentPages
  • getPasswordProtectImage
  • getPHPFiles
  • getPlugin
  • getPluginFiles
  • getPluginTabs
  • getPrevAlbum
  • getPrevAlbumURL
  • getPrevImageThumb
  • getPrevImageURL
  • getPrevNewsPageURL
  • getPrevNewsURL
  • getPrevPageURL
  • getProtectedImageURL
  • getRandomImages
  • getRandomImagesAlbum
  • getRating
  • getRelatedItems
  • getRequestURI
  • getReturnTo
  • getRSSHeaderLink
  • getRSSLink
  • getScheme
  • getSearchDate
  • getSearchURL
  • getSearchWords
  • getSelectedLayout
  • getSerializedArray
  • getSetClause
  • getSiteHomeURL
  • getSitemapAlbumList
  • getSitemapAlbums
  • getSitemapGoogleImageVideoExtras
  • getSitemapGoogleLoopIndex
  • getSitemapImages
  • getSitemapIndexLinks
  • getSitemapZenpageNewsArticles
  • getSitemapZenpageNewsCategories
  • getSitemapZenpageNewsIndex
  • getSitemapZenpagePages
  • getSizeCustomImage
  • getSizeDefaultImage
  • getSizeDefaultThumb
  • getSizedImageURL
  • getSizeFullImage
  • getStore
  • getSubCategories
  • getSubtabs
  • getSuffix
  • getTagCountByAccess
  • getTagOrder
  • getTags
  • gettext_pl
  • gettext_th
  • getTheme
  • getThemeFiles
  • getThemeOption
  • getTimezones
  • getTinyMCE4ConfigFiles
  • getTitle
  • getTotalArticles
  • getTotalImagesIn
  • getTotalNewsPages
  • getTotalPages
  • getTrustRoot
  • getUnprotectedImageURL
  • getUrAlbum
  • getURL
  • getUserIP
  • getUserLocale
  • getVersion
  • getViewerImageSize
  • getWatermarkParam
  • getWatermarkPath
  • getWatermarks
  • getWhereClause
  • getXSRFToken
  • getZenpageHitcounter
  • getZenpageRSSHeaderLink
  • getZenpageRSSLink
  • getZenpageStatistic
  • googleVerifyHead
  • handleSearchParms
  • hasDynamicAlbumSuffix
  • hasNextImage
  • hasNextPage
  • hasPrevImage
  • hasPrevPage
  • hitcounter
  • html_decode
  • html_encode
  • html_encodeTagged
  • httpsRedirect
  • httpUploadHandler
  • httpUploadHandler_admin_tabs
  • i18nSetLocale
  • imageBlurGD
  • imageDebug
  • imageError
  • imageNumber
  • imgSrcURI
  • in_context
  • inNewsCategory
  • inProtectedNewsCategory
  • installSignature
  • instrument
  • inSubNewsCategoryOf
  • internalToFilesystem
  • inventMenuItem
  • iptc_make_tag
  • is_AdminEditPage
  • is_connected
  • is_GalleryNewsType
  • is_News
  • is_NewsArchive
  • is_NewsArticle
  • is_NewsCategory
  • is_NewsPage
  • is_NewsType
  • is_Pages
  • is_valid_email_zp
  • is_valid_image
  • is_valid_other_type
  • is_zip
  • isAlbumClass
  • isAlbumPage
  • isArchive
  • isHandledAlbum
  • isImageClass
  • isImagePage
  • isImagePhoto
  • isImageVideo
  • isLandscape
  • isMyAlbum
  • isMyNews
  • isMyPage
  • isolate
  • isProtectedAlbum
  • isProtectedNewsCategory
  • isProtectedPage
  • isSubNewsCategoryOf
  • isValidURL
  • jQueryUpload_head
  • jQueryUpload_headers
  • jQueryUploadHandler
  • jQueryUploadHandler_admin_tabs
  • js_encode
  • json_decode
  • json_encode
  • kses
  • kses_array_lc
  • kses_attr
  • kses_bad_protocol
  • kses_bad_protocol_once
  • kses_bad_protocol_once2
  • kses_check_attr_val
  • kses_decode_entities
  • kses_hair
  • kses_hook
  • kses_html_error
  • kses_js_entities
  • kses_no_null
  • kses_normalize_entities
  • kses_normalize_entities2
  • kses_split
  • kses_split2
  • kses_stripslashes
  • kses_version
  • ksesProcess
  • layoutSelector
  • layoutSelector_album
  • listDBUses
  • listDirectoryFiles
  • listUses
  • load_zenpage_news
  • load_zenpage_pages
  • loadLocalOptions
  • log_message
  • lookupSortKey
  • macro_admin_tabs
  • macroList_show
  • makeAlbumCurrent
  • makeImageCurrent
  • makeSpecialImageName
  • markRelease_button
  • mb_strlen
  • mb_strpos
  • mb_strrpos
  • mb_strtolower
  • mb_strtoupper
  • mb_substr
  • mb_substr_count
  • menu_admin_toolbox_global
  • menu_tabs
  • minDiff
  • mkdir_recursive
  • my_truncate_string
  • myts_date
  • newAlbum
  • newImage
  • next_album
  • next_comment
  • next_image
  • next_news
  • next_page
  • ngettext_pl
  • ngettext_th
  • normalizeColumns
  • omsAdditions
  • openedForComments
  • parse_query
  • parse_size
  • parseAllowedTags
  • parseHttpAcceptLanguage
  • passAlbums
  • passImages
  • pathurlencode
  • PclZipUtilCopyBlock
  • PclZipUtilOptionText
  • PclZipUtilPathInclusion
  • PclZipUtilPathReduction
  • PclZipUtilRename
  • PclZipUtilTranslateWinPath
  • PHPMailerAutoload
  • populateManagedObjectsList
  • postAlbumSort
  • postIndexDecode
  • postIndexEncode
  • prefix
  • prepareAlbumPage
  • prepareCustomPage
  • prepareImagePage
  • prepareIndexPage
  • print404status
  • print_language_string_list
  • printAddToFavorites
  • printAdminFooter
  • printAdminHeader
  • printAdminRightsTable
  • printAdminToolbox
  • printAlbumBreadcrumb
  • printAlbumButtons
  • printAlbumCustomData
  • printAlbumData
  • printAlbumDate
  • printAlbumDesc
  • printAlbumEditForm
  • printAlbumEditRow
  • printAlbumLegend
  • printAlbumLink
  • printAlbumLocation
  • printAlbumMap
  • printAlbumMenu
  • printAlbumMenuJump
  • printAlbumMenuList
  • printAlbumMenuListAlbum
  • printAlbumPlace
  • printAlbumRating
  • printAlbumsSelector
  • printAlbumStatistic
  • printAlbumStatisticItem
  • printAlbumThumbImage
  • printAlbumTitle
  • printAlbumURL
  • printAlbumZip
  • printAllDates
  • printAllNewsCategories
  • printAllTags
  • printAllTagsAs
  • printAllTagsFromAlbum
  • printAllTagsFromZenpage
  • printAnnotatedAlbumTitle
  • printAnnotatedImageTitle
  • printArticleCategories
  • printArticleDatesDropdown
  • printArticlesPerPageDropdown
  • printBareAlbumDesc
  • printBareAlbumTitle
  • printBareGalleryDesc
  • printBareGalleryTitle
  • printBareImageDesc
  • printBareImageTitle
  • printBareNewsTitle
  • printBarePageTitle
  • printBulkActions
  • printCaptcha
  • printCategoriesStatistic
  • printCategoryCheckboxListEntry
  • printCategoryDropdown
  • printCategoryListSortableTable
  • printCategorySelection
  • printCodeblock
  • printCodeblockEdit
  • printCommentAuthorLink
  • printCommentErrors
  • printCommentForm
  • printContactForm
  • printCurrentNewsArchive
  • printCurrentNewsCategory
  • printCustomAlbumThumbImage
  • printCustomAlbumThumbMaxSpace
  • printCustomMenu
  • printCustomPageSelector
  • printCustomPageURL
  • printCustomSizedImage
  • printCustomSizedImageMaxHeight
  • printCustomSizedImageMaxSpace
  • printCustomSizedImageThumbMaxSpace
  • printDefaultSizedImage
  • printDownloadAlbumZipURL
  • printDownloadLink
  • printDownloadLinkAlbumZip
  • printdownloadList
  • printDownloadURL
  • printEditable
  • printEditCommentLink
  • printEditDropdown
  • printExpired
  • printFavoritesLink
  • printFavoritesURL
  • printField
  • printGalleryDesc
  • printGalleryIndexURL
  • printGalleryTitle
  • printGoogleMap
  • printHeadTitle
  • printHomeLink
  • printImageCustomData
  • printImageData
  • printImageDate
  • printImageDesc
  • printImageDiv
  • printImageEXIFData
  • printImageID
  • printImageLink
  • printImageMap
  • printImageMetadata
  • printImageRating
  • printImageSortOrder
  • printImageStatistic
  • printImageThumb
  • printImageTitle
  • printImageURL
  • printItemEditLink
  • printItemsList
  • printItemsListTable
  • printItemStatusDropdown
  • printjCarouselThumbNav
  • printjPlayerPlaylist
  • printLanguageSelector
  • printLatestAlbums
  • printLatestComments
  • printLatestImages
  • printLatestImagesByDate
  • printLatestImagesByMtime
  • printLatestNews
  • printLatestUpdatedAlbums
  • printLatestZenpageComments
  • printLink
  • printLinkHTML
  • printLogoAndLinks
  • printManagedObjects
  • printMenuemanagerPageList
  • printMenuemanagerPageListWithNav
  • printMenumanagerBreadcrumb
  • printMenumanagerNextLink
  • printMenumanagerPrevLink
  • printMostPopularItems
  • printMostRatedAlbums
  • printMostRatedImages
  • printMostRatedItems
  • printNestedAlbumsList
  • printNestedItemsList
  • printNestedMenu
  • printNews
  • printNewsArchive
  • printNewsAuthor
  • printNewsCategories
  • printNewsCategoryCustomData
  • printNewsCategoryDesc
  • printNewsCategoryURL
  • printNewsContent
  • printNewsCustomData
  • printNewsDate
  • printNewsExtraContent
  • printNewsImageTags
  • printNewsIndexURL
  • printNewsLink
  • printNewsPageList
  • printNewsPageListWithNav
  • printNewsReadMoreLink
  • printNewsStatistic
  • printNewsTitle
  • printNewsTitleLink
  • printNewsURL
  • printNextNewsLink
  • printNextNewsPageLink
  • printNextPageLink
  • printNextPageURL
  • printPageArticleTags
  • printPageAuthor
  • printPageContent
  • printPageCustomData
  • printPageDate
  • printPagedThumbsNav
  • printPageExtraContent
  • printPageID
  • printPageLastChangeDate
  • printPageLinkURL
  • printPageList
  • printPageListWithNav
  • printPageMenu
  • printPageNav
  • printPageSelector
  • printPagesListTable
  • printPagesStatistic
  • printPageTitle
  • printPageTitleLink
  • printPageURL
  • printParentBreadcrumb
  • printParentPagesBreadcrumb
  • printPasswordForm
  • printPopularAlbums
  • printPopularImages
  • printPreloadScript
  • printPrevNewsLink
  • printPrevNewsPageLink
  • printPrevPageLink
  • printPrevPageURL
  • printPublished
  • printPublishIconLink
  • printRandomImages
  • printRating
  • printRegisterURL
  • printRegistrationForm
  • printRelatedItems
  • printRSSHeaderLink
  • printRSSLink
  • printSearchBreadcrumb
  • printSearchForm
  • printSiteHomeURL
  • printSizedImageLink
  • printSizedImageURL
  • printSlideShow
  • printSlideShowJS
  • printSlideShowLink
  • printSortableHead
  • printSortOrderDropdown
  • printSubPagesExcerpts
  • printSubtabs
  • printTabs
  • printTags
  • printThumbNav
  • printTopRatedAlbums
  • printTopRatedImages
  • printTopRatedItems
  • printUnpublishedDropdown
  • printUserLogin_out
  • printUserSizeImage
  • printUserSizeSelector
  • printVersion
  • printZenJavascripts
  • printZenpageIconLegend
  • printZenpageItemsBreadcrumb
  • printZenpageNewsCategorySelector
  • printZenpagePagesSelector
  • printZenpageRSSHeaderLink
  • printZenpageRSSLink
  • printZenpageStatistic
  • printZenphotoLink
  • process_language_string_save
  • processAlbumBulkActions
  • processAlbumEdit
  • processCodeblockSave
  • processCommentBulkActions
  • processCredentials
  • processCustomOptionSave
  • processEditSelection
  • processExpired
  • processImageBulkActions
  • processImageEdit
  • processManagedObjects
  • processMenuBulkActions
  • processOrder
  • processRights
  • processTags
  • processZenpageBulkActions
  • propSizes
  • publishItem
  • purgeOption
  • query
  • query_full_array
  • query_single_row
  • rc4
  • read_exif_data_protected
  • readTags
  • recaptcha_check_answer
  • recaptcha_get_html
  • recaptcha_get_signup_url
  • recaptcha_mailhide_html
  • recaptcha_mailhide_url
  • reconfigureAction
  • reconfigureCS
  • reconfigurePage
  • recordMissing
  • rem_context
  • removeParentAlbumNames
  • resetCurrentAlbum
  • restore_context
  • reveal
  • rewrite_get_album_image
  • rewrite_path
  • rewrite_path_zenpage
  • RSS_Channel
  • RSS_Retrieve
  • RSS_Tags
  • rulesList
  • run
  • safe_fnmatch
  • safe_glob
  • sanitize
  • sanitize_numeric
  • sanitize_path
  • sanitize_script
  • sanitize_string
  • sanitizeRedirect
  • save_context
  • saveLayoutSelection
  • saveZenphotoLayoutSelection
  • search_quote
  • secureServer
  • seo_cleanup_button
  • seoFriendly
  • seoFriendlyJS
  • set_context
  • setAlbumCustomData
  • setAlbumSubtabs
  • setImageCustomData
  • setMainDomain
  • setOption
  • setOptionDefault
  • setPluginDomain
  • setThemeColumns
  • setThemeDomain
  • setThemeOption
  • setThemeOptionDefault
  • setupAllowedMaps
  • setupCurrentLocale
  • setupDomain
  • setupTheme
  • shortenContent
  • showOrNotShowField
  • shuffle_assoc
  • signatureChange
  • site_upgrade_button
  • site_upgrade_status
  • sitemap_echonl
  • sitemap_getChangefreq
  • sitemap_getDateformat
  • sitemap_getDBLimit
  • sitemap_getISO8601Date
  • skipScheduledPublishing
  • sortByKey
  • sortByMultilingual
  • sortMultiArray
  • standardScripts
  • standardThemeOptions
  • stickyNews
  • storeConfig
  • storeTags
  • stripSuffix
  • submenuOf
  • switchLog
  • tagSelector
  • tagSuggestJS
  • tagSuggestJS_admin
  • tagSuggestJS_frontend
  • themeIsEditable
  • themeSetup
  • timezoneDiff
  • tinymce4ConfigJS
  • truncate_string
  • unpublishedZenphotoItemCheck
  • unpublishSubalbums
  • unQuote
  • unzip
  • updateArticle
  • updateCacheName
  • updateCategory
  • updateConfigItem
  • updateItemSortorder
  • updateItemsSortorder
  • updateMenuItem
  • updatePage
  • upload_extra
  • upload_form
  • upload_head
  • user_mailing_list_button
  • validateLocale
  • wordpress_import_button
  • wp_prefix
  • wp_query_full_array
  • wpimport_TryAgainError
  • XSRFdefender
  • XSRFToken
  • zenJavascript
  • zenpageAlbumImage
  • zenpageBulkActionMessage
  • zenpageHitcounter
  • zenpageJSCSS
  • zenpageOpenedForComments
  • zenpagePublish
  • zenphoto_PHPMailer
  • zenphoto_sendmail
  • zenPhotoTheme
  • zp_apply_filter
  • zp_clearCookie
  • zp_colorAllocate
  • zp_cookieEncode
  • zp_copyCanvas
  • zp_createImage
  • zp_drawRectangle
  • zp_error
  • zp_filter_slot
  • zp_filter_unique_id
  • zp_getCookie
  • zp_getFonts
  • zp_graphicsLibInfo
  • zp_handle_password
  • zp_handle_password_single
  • zp_has_filter
  • zp_image_types
  • zp_imageCanRotate
  • zp_imageColorTransparent
  • zp_imageDims
  • zp_imageFill
  • zp_imageFontHeight
  • zp_imageFontWidth
  • zp_imageFromString
  • zp_imageGet
  • zp_imageGray
  • zp_imageHeight
  • zp_imageIPTC
  • zp_imageKill
  • zp_imageLoadFont
  • zp_imageMerge
  • zp_imageOutput
  • zp_imageResizeAlpha
  • zp_imageUnsharpMask
  • zp_imageWidth
  • zp_load_album
  • zp_load_gallery
  • zp_load_image
  • zp_load_page
  • zp_load_request
  • zp_load_search
  • zp_loggedin
  • zp_mail
  • zp_register_filter
  • zp_remove_filter
  • zp_resampleImage
  • zp_rotateImage
  • zp_session_start
  • zp_setCookie
  • zp_writeString
  • zpErrorHandler
  • zpFormattedDate
  • zpRewriteURL
  • Overview
  • Package
  • Class
  • Tree
  • Deprecated
  1: <?php
  2: 
  3: /**
  4:  * UTF-8 friendly replacement functions - v0.2
  5:  * Copyright (C) 2004-2006 Niels Leenheer & Andy Matsubara
  6:  *
  7:  * This program is free software; you can redistribute it and/or
  8:  * modify it under the terms of the GNU General Public License
  9:  * as published by the Free Software Foundation; either version 2
 10:  * of the License, or (at your option) any later version.
 11:  *
 12:  *  Supported functions:
 13:  * - utf8::convert()
 14:  * - utf8::detect()
 15:  * - utf8::strtolower()
 16:  * - utf8::strtoupper()
 17:  * - utf8::strlen()
 18:  * - utf8::strwidth()
 19:  * - utf8::substr()
 20:  * - utf8::strimwidth()
 21:  * - utf8::strcut()
 22:  * - utf8::strrpos()
 23:  * - utf8::strpos()
 24:  * - utf8::substr_count()
 25:  * - utf8::encode_mimeheader()
 26:  * - utf8::send_mail()
 27:  * - utf8::encode_javascript()
 28:  * - utf8::encode_numericentity()
 29:  *
 30:  * @package core
 31:  */
 32: // force UTF-8 Ø
 33: 
 34: global $_zp_UTF8;
 35: $_zp_UTF8 = new utf8();
 36: 
 37: class utf8 {
 38: 
 39:     /**
 40:      * Character set translation support
 41:      *
 42:      * @return utf8
 43:      */
 44:     var $charsets;
 45:     var $mb_sets;
 46:     var $iconv_sets;
 47: 
 48:     function __construct() {
 49:         $this->charsets = array(
 50:                         "BIG5"          => gettext("Chinese Traditional"),
 51:                         "EUC-CN"        => gettext("Chinese Simplified (EUC)"),
 52:                         "EUC-JP"        => gettext("Japanese (EUC)"),
 53:                         "EUC-KR"        => gettext("Korean (EUC)"),
 54:                         "GB18030"       => gettext("Chinese (PRC new)"),
 55:                         "GB2312"        => gettext("Chinese (PRC old)"),
 56:                         "GBK"           => gettext("Chinese (PRC simplified)"),
 57:                         "IBM437"        => gettext("OEM United States"),
 58:                         "IBM775"        => gettext("Baltic (DOS)"),
 59:                         "IBM850"        => gettext("Western European (DOS)"),
 60:                         "IBM852"        => gettext("Central European (DOS)"),
 61:                         "IBM857"        => gettext("Turkish (DOS)"),
 62:                         "IBM861"        => gettext("Icelandic (DOS)"),
 63:                         "IBM869"        => gettext("Greek, Modern (DOS)"),
 64:                         "ISO-2022-JP"   => gettext("Japanese (JIS)"),
 65:                         "ISO-8859-1"    => gettext("Western European (ISO)"),
 66:                         "ISO-8859-2"    => gettext("Central European (ISO)"),
 67:                         "ISO-8859-3"    => gettext("Latin 3 (ISO)"),
 68:                         "ISO-8859-5"    => gettext("Cyrillic (ISO)"),
 69:                         "ISO-8859-6"    => gettext("Arabic (ISO)"),
 70:                         "ISO-8859-7"    => gettext("Greek (ISO)"),
 71:                         "ISO-8859-8"    => gettext("Hebrew (ISO-Visual)"),
 72:                         "ISO-8859-9"    => gettext("Turkish (ISO)"),
 73:                         "ISO-8859-13"   => gettext("Baltic (ISO)"),
 74:                         "ISO-8859-14"   => gettext("Celtic (ISO)"),
 75:                         "ISO-8859-15"   => gettext("Latin 9 (ISO)"),
 76:                         "ISO-8859-16"   => gettext("South European (ISO)"),
 77:                         "KOI8-R"        => gettext("Cyrillic (KOI8-R)"),
 78:                         "KOI8-U"        => gettext("Cyrillic (KOI8-U)"),
 79:                         "SHIFT-JIS"     => gettext("Japanese (Shift-JIS)"),
 80:                         "TIS-620"       => gettext("Thai"),
 81:                         "US-ASCII"      => gettext("US-ASCII"),
 82:                         "UTF-7"         => gettext("Unicode (UTF-7)"),
 83:                         "UTF-8"         => gettext("Unicode (UTF-8)"),
 84:                         "UTF-16"        => gettext("Unicode (UTF-16)"),
 85:                         "WINDOWS-1250"  => gettext("Central European (Windows)"),
 86:                         "WINDOWS-1251"  => gettext("Cyrillic (Windows)"),
 87:                         "WINDOWS-1252"  => gettext("Western European (Windows)"),
 88:                         "WINDOWS-1253"  => gettext("Greek (Windows)"),
 89:                         "WINDOWS-1254"  => gettext("Turkish (Windows)"),
 90:                         "WINDOWS-1255"  => gettext("Hebrew (Windows)"),
 91:                         "WINDOWS-1256"  => gettext("Arabic (Windows)"),
 92:                         "WINDOWS-1257"  => gettext("Baltic (Windows)"),
 93:                         "WINDOWS-1258"  => gettext("Vietnamese (Windows)"),
 94:                         "WINDOWS-874"   => gettext("Thai (Windows)")
 95:         );
 96:         // prune the list to supported character sets
 97:         $this->iconv_sets = array();
 98:         $this->mb_sets = array();
 99:         if (function_exists('mb_convert_encoding')) {
100:             if (function_exists('mb_list_encodings')) {
101:                 $list = mb_list_encodings();
102:             } else {
103:                 $list = array(// from my PHP 5 mb_list_encodings list....
104:                         "pass",
105:                         "auto",
106:                         "wchar",
107:                         "byte2be",
108:                         "byte2le",
109:                         "byte4be",
110:                         "byte4le",
111:                         "BASE64",
112:                         "UUENCODE",
113:                         "HTML-ENTITIES",
114:                         "Quoted-Printable",
115:                         "7bit",
116:                         "8bit",
117:                         "UCS-4",
118:                         "UCS-4BE",
119:                         "UCS-4LE",
120:                         "UCS-2",
121:                         "UCS-2BE",
122:                         "UCS-2LE",
123:                         "UTF-32",
124:                         "UTF-32BE",
125:                         "UTF-32LE",
126:                         "UTF-16",
127:                         "UTF-16BE",
128:                         "UTF-16LE",
129:                         "UTF-8",
130:                         "UTF-7",
131:                         "UTF7-IMAP",
132:                         "ASCII",
133:                         "EUC-JP",
134:                         "SJIS",
135:                         "eucJP-win",
136:                         "EUC-JP-2004",
137:                         "SJIS-win",
138:                         "SJIS-Mobile#DOCOMO",
139:                         "SJIS-Mobile#KDDI",
140:                         "SJIS-Mobile#SOFTBANK",
141:                         "SJIS-mac",
142:                         "SJIS-2004",
143:                         "UTF-8-Mobile#DOCOMO",
144:                         "UTF-8-Mobile#KDDI-A",
145:                         "UTF-8-Mobile#KDDI-B",
146:                         "UTF-8-Mobile#SOFTBANK",
147:                         "CP932",
148:                         "CP51932",
149:                         "JIS",
150:                         "ISO-2022-JP",
151:                         "ISO-2022-JP-MS",
152:                         "GB18030",
153:                         "Windows-1252",
154:                         "Windows-1254",
155:                         "ISO-8859-1",
156:                         "ISO-8859-2",
157:                         "ISO-8859-3",
158:                         "ISO-8859-4",
159:                         "ISO-8859-5",
160:                         "ISO-8859-6",
161:                         "ISO-8859-7",
162:                         "ISO-8859-8",
163:                         "ISO-8859-9",
164:                         "ISO-8859-10",
165:                         "ISO-8859-13",
166:                         "ISO-8859-14",
167:                         "ISO-8859-15",
168:                         "ISO-8859-16",
169:                         "EUC-CN",
170:                         "CP936",
171:                         "HZ",
172:                         "EUC-TW",
173:                         "BIG-5",
174:                         "CP950",
175:                         "EUC-KR",
176:                         "UHC",
177:                         "ISO-2022-KR",
178:                         "Windows-1251",
179:                         "CP866",
180:                         "KOI8-R",
181:                         "KOI8-U",
182:                         "ArmSCII-8",
183:                         "CP850",
184:                         "JIS-ms",
185:                         "ISO-2022-JP-2004",
186:                         "ISO-2022-JP-MOBILE#KDDI",
187:                         "CP50220",
188:                         "CP50220raw",
189:                         "CP50221",
190:                         "CP50222"
191:                 );
192:             }
193:             foreach ($this->charsets as $key => $encoding) {
194:                 if (in_array($key, $list)) {
195:                     $this->mb_sets[$key] = $encoding;
196:                 }
197:             }
198:         }
199:         if (function_exists('iconv')) {
200:             foreach ($this->charsets as $key => $encoding) {
201:                 if (@iconv("UTF-8", "$key//IGNORE", "UTF-8") !== false) {
202:                     $this->iconv_sets[$key] = $encoding;
203:                 }
204:             }
205:         }
206:     }
207: 
208:     /**
209:      *
210:      * replaces invalid UTF-8 characters with blanks
211:      *
212:      */
213:     static function sanitize($text) {
214:         if (function_exists('iconv')) {
215:             return iconv("UTF-8", "UTF-8//IGNORE", $text);
216:         } else if (function_exists('mb_convert_encoding')) {
217:             mb_convert_encoding($text, 'UTF-8', 'UTF-8');
218:         }
219:         return $text;
220:     }
221: 
222:     /**
223:      * Convert a foreign charset encoding from or to UTF-8
224:      */
225:     function convert($string, $encoding = NULL, $destination = 'UTF-8') {
226:         if (!$encoding)
227:             $encoding = utf8::detect($string);
228:         if ($encoding == $destination)
229:             return $string;
230: 
231:         if (!empty($this->mb_sets)) {
232:             $encode_mb = array_key_exists($encoding, $this->mb_sets);
233:             $dest_mb = array_key_exists($destination, $this->mb_sets);
234:             if ($encode_mb && $dest_mb) {
235:                 @mb_substitute_character('none');
236:                 return mb_convert_encoding($string, $destination, $encoding);
237:             }
238:         } else {
239:             $encode_mb = $dest_mb = false;
240:         }
241: 
242:         $encode_iconv = array_key_exists($encoding, $this->iconv_sets);
243:         $dest_iconv = array_key_exists($destination, $this->iconv_sets);
244:         if ($encode_iconv && $dest_iconv) {
245:             return @iconv($encoding, $destination . '//IGNORE', $string);
246:         }
247:         // must use mixed conversion
248:         @mb_substitute_character('none');
249:         if ($encode_mb) {
250:             $instring = mb_convert_encoding($string, 'UTF-8', $encoding);
251:         } else if ($encode_iconv) {
252:             $instring = @iconv($encoding, 'UTF-8' . '//IGNORE', $string);
253:         } else {
254:             $instring = $string;
255:         }
256:         if ($dest_mb) {
257:             $outstring = mb_convert_encoding($string, $destination, 'UTF-8');
258:         } else if ($dest_iconv) {
259:             $outstring = @iconv('UTF-8', $destination . '//IGNORE', $string);
260:         } else {
261:             $outstring = $string;
262:         }
263:         return $outstring;
264:     }
265: 
266:     /**
267:      * Detect the encoding of the string
268:      */
269:     static function detect($string) {
270:         if (function_exists('mb_detect_encoding')) {
271:             $encoding = mb_detect_encoding($string);
272:             if ($encoding) {
273:                 return $encoding;
274:             }
275:         }
276:         if (!preg_match("/[\x80-\xFF]/", $string) && !preg_match("/\x1B/", $string))
277:             return 'US-ASCII';
278: 
279:         if (!preg_match("/[\x80-\xFF]/", $string) && preg_match("/\x1B/", $string))
280:             return 'ISO-2022-JP';
281: 
282:         if (preg_match("/^([\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF])+$/", $string) == 1)
283:             return 'UTF-8';
284: 
285:         if (preg_match("/^([\x01-\x7F]|\x8E[\xA0-\xDF]|\x8F[xA1-\xFE][\xA1-\xFE]|[\xA1-\xFE][\xA1-\xFE])+$/", $string) == 1)
286:             return 'EUC-JP';
287: 
288:         if (preg_match("/^([\x01-\x7F]|[\xA0-\xDF]|[\x81-\xFC][\x40-\xFC])+$/", $string) == 1)
289:             return 'Shift_JIS';
290: 
291:         return 'ISO-8859-1';
292:     }
293: 
294:     /**
295:      * Determine the number of characters of a string
296:      * Compatible with mb_strlen(), an UTF-8 friendly replacement for strlen()
297:      */
298:     static function strlen($str) {
299:         return preg_match_all('/[\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]/', $str, $arr);
300:     }
301: 
302:     /**
303:      * Count the number of substring occurances
304:      * Compatible with mb_substr_count(), an UTF-8 friendly replacement for substr_count()
305:      */
306:     static function substr_count($haystack, $needle) {
307:         return substr_count($haystack, $needle);
308:     }
309: 
310:     /**
311:      * Return part of a string, length and offset in characters
312:      * Compatible with mb_substr(), an UTF-8 friendly replacement for substr()
313:      */
314:     static function substr($str, $start, $length = NULL) {
315:         preg_match_all('/[\x01-\x7F]|[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF][\x80-\xBF]/', $str, $arr);
316:         if (is_null($length)) {
317:             $arr = array_slice($arr[0], $start);
318:         } else {
319:             $arr = array_slice($arr[0], $start, $length);
320:         }
321:         $result = implode('', $arr);
322:         return $result;
323:     }
324: 
325:     /**
326:      * Return part of a string, length and offset in bytes
327:      * Compatible with mb_strcut()
328:      */
329:     static function strcut($str, $start, $length = NULL) {
330:         if ($start < 0)
331:             $start += strlen($str);
332:         $original = $start;
333:         while ($start > 0 && intval(ord($str[$start]) & 0xC0) == 0x80)
334:             $start--;
335: 
336:         $start = max($start, 0);
337:         $original = max($original, 0);
338: 
339:         if ($start < strlen($str)) {
340:             if (is_null($length)) {
341:                 return substr($str, $start);
342:             } elseif ($length > 0) {
343:                 $end = $start + $length;
344: 
345:                 while ($end > 0 && intval(ord($str[$end]) & 0xC0) == 0x80)
346:                     $end--;
347: 
348:                 return substr($str, $start, $end - $start);
349:             } elseif ($length < 0) {
350:                 $end = strlen($str) + $length - ($original - $start);
351: 
352:                 while ($end > 0 && intval(ord($str[$end]) & 0xC0) == 0x80)
353:                     $end--;
354: 
355:                 if ($end > 0)
356:                     return substr($str, $start, $end - $start);
357:             }
358:         }
359: 
360:         return '';
361:     }
362: 
363:     /**
364:      * Determine the width of a string
365:      * Compatible with mb_strwidth()
366:      */
367:     static function strwidth($str) {
368:         $double = preg_match_all('/[\xE2-\xEF][\x80-\xBF][\x80-\xBF]/', $str, $arr) - // U+2000 - U+FFFF = double width
369:                         preg_match_all('/\xEF\xBD[\xA1-\xBF]|\xEF\xBE[\x80-\x9F]/', $str, $arr); // U+FF61 - U+FF9F = single width
370:         $null = preg_match_all('/[\x00-\x19]/', $str, $arr);     // U+0000 - U+0019 = no width
371: 
372:         return UTF8::strlen($str) - $null + $double;
373:     }
374: 
375:     /**
376:      * Get truncated string with specified width
377:      * Compatible with mb_strimwidth()
378:      */
379:     static function strimwidth($str, $start, $width, $trimmarker = '') {
380: 
381:         $str = UTF8::substr($str, $start);
382:         $width = $width - UTF8::strwidth($trimmarker);
383:         $c = 0;
384: 
385:         for ($i = 0; $i < strlen($str); $i++) {
386:             $b1 = (int) ord($str[$i]);
387: 
388:             if ($b1 < 0x80 || $b1 > 0xBF) {
389:                 $c++;
390: 
391:                 if ($b1 > 0xE2) {
392:                     $b2 = (int) ord($str[$i + 1]);
393:                     $b3 = (int) ord($str[$i + 2]);
394: 
395:                     if (($b2 == 0xBD && $b3 >= 0xA1) || ($b2 == 0xBE && $b3 <= 0x9F))
396:                         $count++;
397:                     else
398:                         $count = $count + 2;
399:                 }
400:                 else
401:                     $count++;
402:             }
403: 
404:             if ($count > $width) {
405:                 return UTF8::substr($str, 0, $c - 1) . $trimmarker;
406:             }
407:         }
408:     }
409: 
410:     /**
411:      * Find position of last occurance of a string in another string
412:      * Compatible with mb_strrpos(), an UTF-8 friendly replacement for strrpos()
413:      */
414:     static function strrpos($haystack, $needle) {
415:         $pos = strrpos($haystack, $needle);
416:         if ($pos === false)
417:             return false;
418:         else
419:             return UTF8::strlen(substr($haystack, 0, $pos));
420:     }
421: 
422:     /**
423:      * Find position of first occurance of a string in another string
424:      * Compatible with mb_strpos(), an UTF-8 friendly replacement for strpos()
425:      */
426:     static function strpos($haystack, $needle, $offset = 0) {
427:         $comp = 0;
428: 
429:         while (!isset($length) || $length < $offset) {
430:             $pos = strpos($haystack, $needle, $offset + $comp);
431:             if ($pos === false)
432:                 return false;
433:             $length = UTF8::strlen(substr($haystack, 0, $pos));
434:             if ($length < $offset)
435:                 $comp = $pos - $length;
436:         }
437: 
438:         return $length;
439:     }
440: 
441:     /**
442:      * Convert a string to lower case
443:      * Compatible with mb_strtolower(), an UTF-8 friendly replacement for strtolower()
444:      */
445:     static function strtolower($str) {
446:         global $UTF8_TABLES;
447:         return strtr($str, $UTF8_TABLES['strtolower']);
448:     }
449: 
450:     /**
451:      * Convert a string to upper case
452:      * Compatible with mb_strtoupper(), an UTF-8 friendly replacement for strtoupper()
453:      */
454:     static function strtoupper($str) {
455:         global $UTF8_TABLES;
456:         return strtr($str, $UTF8_TABLES['strtoupper']);
457:     }
458: 
459:     /**
460:      * Encode a string for use in a MIME header
461:      * Simplied replacement for mb_encode_mimeheader()
462:      */
463:     static function encode_mimeheader($str) {
464:         $length = 45;
465:         $pos = 0;
466:         $max = strlen($str);
467:         $buffer = '';
468:         while ($pos < $max) {
469:             if ($pos + $length < $max) {
470:                 $adjust = 0;
471: 
472:                 while (intval(ord($str[$pos + $length + $adjust]) & 0xC0) == 0x80)
473:                     $adjust--;
474: 
475:                 $buffer .= ($buffer == '' ? '' : "?=\n =?UTF-8?B?") . base64_encode(substr($str, $pos, $length + $adjust));
476:                 $pos = $pos + $length + $adjust;
477:             } else {
478:                 $buffer .= ($buffer == '' ? '' : "?=\n =?UTF-8?B?") . base64_encode(substr($str, $pos));
479:                 $pos = $max;
480:             }
481:         }
482: 
483:         return '=?UTF-8?B?' . $buffer . '?=';
484:     }
485: 
486:     /**
487:      * Send mail
488:      * Replacement for mb_send_mail(), an UTF-8 friendly replacement for mail()
489:      */
490:     static function send_mail($to, $subject, $message, $additional_headers = '', $additional_parameter = '') {
491:         $subject = UTF8::encode_mimeheader($subject);
492:         $message = chunk_split(base64_encode($message));
493: 
494:         $additional_headers = trim($additional_headers);
495: 
496:         if ($additional_headers != '')
497:             $additional_headers .= "\n";
498: 
499:         $additional_headers .=
500:                         "Mime-Version: 1.0\n" .
501:                         "Content-Type: text/plain; charset=UTF-8\n" .
502:                         "Content-Transfer-Encoding: base64";
503: 
504:         if (SAFE_MODE) {
505:             return @mail($to, $subject, $message, $additional_headers);
506:         } else {
507:             return @mail($to, $subject, $message, $additional_headers, $additional_parameter);
508:         }
509:     }
510: 
511:     /**
512:      * Prepare an UTF-8 string for use in JavaScript
513:      */
514:     static function encode_javascript($string) {
515:         $string = str_replace('\\', '\\\\', $string);
516:         $string = str_replace('"', '\\"', $string);
517:         $string = str_replace("'", "\\'", $string);
518:         $string = str_replace("\n", "\\n", $string);
519:         $string = str_replace("\r", "\\r", $string);
520:         $string = str_replace("\t", "\\t", $string);
521: 
522:         $len = strlen($string);
523:         $pos = 0;
524:         $out = '';
525: 
526:         while ($pos < $len) {
527:             $ascii = ord(substr($string, $pos, 1));
528: 
529:             if ($ascii >= 0xF0) {
530:                 $byte[1] = ord(substr($string, $pos, 1)) - 0xF0;
531:                 $byte[2] = ord(substr($string, $pos + 1, 1)) - 0x80;
532:                 $byte[3] = ord(substr($string, $pos + 2, 1)) - 0x80;
533:                 $byte[4] = ord(substr($string, $pos + 3, 1)) - 0x80;
534: 
535: 
536:                 $char_code = ($byte[1] << 18) + ($byte[2] << 12) + ($byte[3] << 6) + $byte[4];
537:                 $pos += 4;
538:             } elseif (($ascii >= 0xE0) && ($ascii < 0xF0)) {
539:                 $byte[1] = ord(substr($string, $pos, 1)) - 0xE0;
540:                 $byte[2] = ord(substr($string, $pos + 1, 1)) - 0x80;
541:                 $byte[3] = ord(substr($string, $pos + 2, 1)) - 0x80;
542: 
543:                 $char_code = ($byte[1] << 12) + ($byte[2] << 6) + $byte[3];
544:                 $pos += 3;
545:             } elseif (($ascii >= 0xC0) && ($ascii < 0xE0)) {
546:                 $byte[1] = ord(substr($string, $pos, 1)) - 0xC0;
547:                 $byte[2] = ord(substr($string, $pos + 1, 1)) - 0x80;
548: 
549:                 $char_code = ($byte[1] << 6) + $byte[2];
550:                 $pos += 2;
551:             } else {
552:                 $char_code = ord(substr($string, $pos, 1));
553:                 $pos += 1;
554:             }
555: 
556:             if ($char_code < 0x80)
557:                 $out .= chr($char_code);
558:             else
559:                 $out .= '\\u' . str_pad(dechex($char_code), 4, '0', STR_PAD_LEFT);
560:         }
561: 
562:         return $out;
563:     }
564: 
565:     /**
566:      * Encode an UTF-8 string with numeric entities
567:      * Simplied replacement for mb_encode_numericentity()
568:      */
569:     static function encode_numericentity($string) {
570:         $len = strlen($string);
571:         $pos = 0;
572:         $out = '';
573: 
574:         while ($pos < $len) {
575:             $ascii = ord(substr($string, $pos, 1));
576: 
577:             if ($ascii >= 0xF0) {
578:                 $byte[1] = ord(substr($string, $pos, 1)) - 0xF0;
579:                 $byte[2] = ord(substr($string, $pos + 1, 1)) - 0x80;
580:                 $byte[3] = ord(substr($string, $pos + 2, 1)) - 0x80;
581:                 $byte[4] = ord(substr($string, $pos + 3, 1)) - 0x80;
582: 
583:                 $char_code = ($byte[1] << 18) + ($byte[2] << 12) + ($byte[3] << 6) + $byte[4];
584:                 $pos += 4;
585:             } elseif (($ascii >= 0xE0) && ($ascii < 0xF0)) {
586:                 $byte[1] = ord(substr($string, $pos, 1)) - 0xE0;
587:                 $byte[2] = ord(substr($string, $pos + 1, 1)) - 0x80;
588:                 $byte[3] = ord(substr($string, $pos + 2, 1)) - 0x80;
589: 
590:                 $char_code = ($byte[1] << 12) + ($byte[2] << 6) + $byte[3];
591:                 $pos += 3;
592:             } elseif (($ascii >= 0xC0) && ($ascii < 0xE0)) {
593:                 $byte[1] = ord(substr($string, $pos, 1)) - 0xC0;
594:                 $byte[2] = ord(substr($string, $pos + 1, 1)) - 0x80;
595: 
596:                 $char_code = ($byte[1] << 6) + $byte[2];
597:                 $pos += 2;
598:             } else {
599:                 $char_code = ord(substr($string, $pos, 1));
600:                 $pos += 1;
601:             }
602: 
603:             if ($char_code < 0x80)
604:                 $out .= chr($char_code);
605:             else
606:                 $out .= '&#' . str_pad($char_code, 5, '0', STR_PAD_LEFT) . ';';
607:         }
608: 
609:         return $out;
610:     }
611: 
612: }
613: 
614: /* * **************************************************************************************************** */
615: 
616: global $UTF8_TABLES;
617: 
618: $UTF8_TABLES['strtolower'] = array(
619:                 "Z"    => "z", "Y"     => "y", "X"     => "x", "W"     => "w", "V"     => "v", "U"     => "u",
620:                 "T"    => "t", "S"     => "s", "R"     => "r", "Q"     => "q", "P"     => "p", "O"     => "o",
621:                 "N"    => "n", "M"     => "m", "L"     => "l", "K"     => "k", "J"     => "j", "I"     => "i",
622:                 "H"    => "h", "G"     => "g", "F"     => "f", "E"     => "e", "D"     => "d", "C"     => "c",
623:                 "B"    => "b", "A"     => "a", "Å"     => "å", "K"  => "k", "Ω"   => "ω", "Ώ"  => "ώ",
624:                 "Ὼ"    => "ὼ", "Ό"     => "ό", "Ὸ"     => "ὸ", "Ῥ"     => "ῥ", "Ύ"     => "ύ", "Ὺ"     => "ὺ",
625:                 "Ῡ"    => "ῡ", "Ῠ"     => "� ", "Ί"    => "ί", "Ὶ"     => "ὶ", "Ῑ"     => "ῑ", "Ῐ"     => "ῐ",
626:                 "Ή"    => "ή", "Ὴ"     => "ὴ", "Έ"     => "έ", "Ὲ"     => "ὲ", "Ά"     => "ά", "Ὰ"     => "ὰ",
627:                 "Ᾱ"    => "ᾱ", "Ᾰ"     => "ᾰ", "Ὧ"     => "ὧ", "Ὦ"     => "ὦ", "Ὥ"     => "ὥ", "Ὤ"     => "ὤ",
628:                 "Ὣ"    => "ὣ", "Ὢ"     => "ὢ", "Ὡ"     => "ὡ", "Ὠ"     => "� ", "Ὗ"    => "ὗ", "Ὕ"     => "ὕ",
629:                 "Ὓ"    => "ὓ", "Ὑ"     => "ὑ", "Ὅ"     => "ὅ", "Ὄ"     => "ὄ", "Ὃ"     => "ὃ", "Ὂ"     => "ὂ",
630:                 "Ὁ"    => "ὁ", "Ὀ"     => "ὀ", "Ἷ"     => "ἷ", "Ἶ"     => "ἶ", "Ἵ"     => "ἵ", "Ἴ"     => "ἴ",
631:                 "Ἳ"    => "ἳ", "Ἲ"     => "ἲ", "Ἱ"     => "ἱ", "Ἰ"     => "ἰ", "Ἧ"     => "ἧ", "Ἦ"     => "ἦ",
632:                 "Ἥ"    => "ἥ", "Ἤ"     => "ἤ", "Ἣ"     => "ἣ", "Ἢ"     => "ἢ", "Ἡ"     => "ἡ", "Ἠ"     => "� ",
633:                 "Ἕ"    => "ἕ", "Ἔ"     => "ἔ", "Ἓ"     => "ἓ", "Ἒ"     => "ἒ", "Ἑ"     => "ἑ", "Ἐ"     => "ἐ",
634:                 "Ἇ"    => "ἇ", "Ἆ"     => "ἆ", "Ἅ"     => "ἅ", "Ἄ"     => "ἄ", "Ἃ"     => "ἃ", "Ἂ"     => "ἂ",
635:                 "Ἁ"    => "ἁ", "Ἀ"     => "ἀ", "Ỹ"     => "ỹ", "Ỷ"     => "ỷ", "Ỵ"     => "ỵ", "Ỳ"     => "ỳ",
636:                 "Ự"    => "ự", "Ữ"     => "ữ", "Ử"     => "ử", "Ừ"     => "ừ", "Ứ"     => "ứ", "Ủ"     => "ủ",
637:                 "Ụ"    => "ụ", "Ợ"     => "ợ", "� " => "ỡ", "Ở"    => "ở", "Ờ"     => "ờ", "Ớ"     => "ớ",
638:                 "Ộ"    => "ộ", "Ỗ"     => "ỗ", "Ổ"     => "ổ", "Ồ"     => "ồ", "Ố"     => "ố", "Ỏ"     => "ỏ",
639:                 "Ọ"    => "ọ", "Ị"     => "ị", "Ỉ"     => "ỉ", "Ệ"     => "ệ", "Ễ"     => "ễ", "Ể"     => "ể",
640:                 "Ề"    => "ề", "Ế"     => "ế", "Ẽ"     => "ẽ", "Ẻ"     => "ẻ", "Ẹ"     => "ẹ", "Ặ"     => "ặ",
641:                 "Ẵ"    => "ẵ", "Ẳ"     => "ẳ", "Ằ"     => "ằ", "Ắ"     => "ắ", "Ậ"     => "ậ", "Ẫ"     => "ẫ",
642:                 "Ẩ"    => "ẩ", "Ầ"     => "ầ", "Ấ"     => "ấ", "Ả"     => "ả", "� " => "ạ", "Ẕ"    => "ẕ",
643:                 "Ẓ"    => "ẓ", "Ẑ"     => "ẑ", "Ẏ"     => "ẏ", "Ẍ"     => "ẍ", "Ẋ"     => "ẋ", "Ẉ"     => "ẉ",
644:                 "Ẇ"    => "ẇ", "Ẅ"     => "ẅ", "Ẃ"     => "ẃ", "Ẁ"     => "ẁ", "Ṿ"     => "ṿ", "Ṽ"     => "ṽ",
645:                 "Ṻ"    => "ṻ", "Ṹ"     => "ṹ", "Ṷ"     => "ṷ", "Ṵ"     => "ṵ", "Ṳ"     => "ṳ", "Ṱ"     => "ṱ",
646:                 "Ṯ"    => "ṯ", "Ṭ"     => "ṭ", "Ṫ"     => "ṫ", "Ṩ"     => "ṩ", "Ṧ"     => "ṧ", "Ṥ"     => "ṥ",
647:                 "Ṣ"    => "ṣ", "� " => "ṡ", "Ṟ"    => "ṟ", "Ṝ"     => "ṝ", "Ṛ"     => "ṛ", "Ṙ"     => "ṙ",
648:                 "Ṗ"    => "ṗ", "Ṕ"     => "ṕ", "Ṓ"     => "ṓ", "Ṑ"     => "ṑ", "Ṏ"     => "ṏ", "Ṍ"     => "ṍ",
649:                 "Ṋ"    => "ṋ", "Ṉ"     => "ṉ", "Ṇ"     => "ṇ", "Ṅ"     => "ṅ", "Ṃ"     => "ṃ", "Ṁ"     => "ṁ",
650:                 "Ḿ"    => "ḿ", "Ḽ"     => "ḽ", "Ḻ"     => "ḻ", "Ḹ"     => "ḹ", "Ḷ"     => "ḷ", "Ḵ"     => "ḵ",
651:                 "Ḳ"    => "ḳ", "Ḱ"     => "ḱ", "Ḯ"     => "ḯ", "Ḭ"     => "ḭ", "Ḫ"     => "ḫ", "Ḩ"     => "ḩ",
652:                 "Ḧ"    => "ḧ", "Ḥ"     => "ḥ", "Ḣ"     => "ḣ", "� " => "ḡ", "Ḟ"    => "ḟ", "Ḝ"     => "ḝ",
653:                 "Ḛ"    => "ḛ", "Ḙ"     => "ḙ", "Ḗ"     => "ḗ", "Ḕ"     => "ḕ", "Ḓ"     => "ḓ", "Ḑ"     => "ḑ",
654:                 "Ḏ"    => "ḏ", "Ḍ"     => "ḍ", "Ḋ"     => "ḋ", "Ḉ"     => "ḉ", "Ḇ"     => "ḇ", "Ḅ"     => "ḅ",
655:                 "Ḃ"    => "ḃ", "Ḁ"     => "ḁ", "Ֆ"  => "ֆ", "Օ"   => "օ", "Ք"   => "ք", "Փ"   => "փ",
656:                 "Ւ"     => "ւ", "Ց"   => "ց", "Ր"   => "ր", "Տ"   => "տ", "Վ"   => "վ", "Ս"   => "ս",
657:                 "Ռ"     => "ռ", "Ջ"   => "ջ", "Պ"   => "պ", "Չ"   => "չ", "Ո"   => "ո", "Շ"   => "շ",
658:                 "Ն"     => "ն", "Յ"   => "յ", "Մ"   => "մ", "Ճ"   => "ճ", "Ղ"   => "ղ", "Ձ"   => "ձ",
659:                 "Հ"     => "հ", "Կ"   => "կ", "Ծ"   => "ծ", "Խ"   => "խ", "Լ"   => "լ", "Ի"   => "ի",
660:                 "Ժ"     => "ժ", "Թ"   => "թ", "Ը"   => "ը", "Է"   => "է", "Զ"   => "զ", "Ե"   => "ե",
661:                 "Դ"     => "դ", "Գ"   => "գ", "Բ"   => "բ", "Ա"   => "ա", "Ԏ"   => "ԏ", "Ԍ"   => "ԍ",
662:                 "Ԋ"     => "ԋ", "Ԉ"   => "ԉ", "Ԇ"   => "ԇ", "Ԅ"   => "ԅ", "Ԃ"   => "ԃ", "Ԁ"   => "ԁ",
663:                 "Ӹ"     => "ӹ", "Ӵ"   => "ӵ", "Ӳ"   => "ӳ", "Ӱ"   => "ӱ", "Ӯ"   => "ӯ", "Ӭ"   => "ӭ",
664:                 "Ӫ"     => "ӫ", "Ө"   => "ө", "Ӧ"   => "ӧ", "Ӥ"   => "ӥ", "Ӣ"   => "ӣ", "� " => "ӡ",
665:                 "Ӟ"     => "ӟ", "Ӝ"   => "ӝ", "Ӛ"   => "ӛ", "Ә"   => "ә", "Ӗ"   => "ӗ", "Ӕ"   => "ӕ",
666:                 "Ӓ"     => "ӓ", "Ӑ"   => "ӑ", "Ӎ"   => "ӎ", "Ӌ"   => "ӌ", "Ӊ"   => "ӊ", "Ӈ"   => "ӈ",
667:                 "Ӆ"     => "ӆ", "Ӄ"   => "ӄ", "Ӂ"   => "ӂ", "Ҿ"   => "ҿ", "Ҽ"   => "ҽ", "Һ"   => "һ",
668:                 "Ҹ"     => "ҹ", "Ҷ"   => "ҷ", "Ҵ"   => "ҵ", "Ҳ"   => "ҳ", "Ұ"   => "ұ", "Ү"   => "ү",
669:                 "Ҭ"     => "ҭ", "Ҫ"   => "ҫ", "Ҩ"   => "ҩ", "Ҧ"   => "ҧ", "Ҥ"   => "ҥ", "Ң"   => "ң",
670:                 "� " => "ҡ", "Ҟ"     => "ҟ", "Ҝ"   => "ҝ", "Қ"   => "қ", "Ҙ"   => "ҙ", "Җ"   => "җ",
671:                 "Ҕ"     => "ҕ", "Ғ"   => "ғ", "Ґ"   => "ґ", "Ҏ"   => "ҏ", "Ҍ"   => "ҍ", "Ҋ"   => "ҋ",
672:                 "Ҁ"     => "ҁ", "Ѿ"   => "ѿ", "Ѽ"   => "ѽ", "Ѻ"   => "ѻ", "Ѹ"   => "ѹ", "Ѷ"   => "ѷ",
673:                 "Ѵ"     => "ѵ", "Ѳ"   => "ѳ", "Ѱ"   => "ѱ", "Ѯ"   => "ѯ", "Ѭ"   => "ѭ", "Ѫ"   => "ѫ",
674:                 "Ѩ"     => "ѩ", "Ѧ"   => "ѧ", "Ѥ"   => "ѥ", "Ѣ"   => "ѣ", "� " => "ѡ", "Я"   => "я",
675:                 "Ю"     => "ю", "Э"   => "э", "Ь"   => "ь", "Ы"   => "ы", "Ъ"   => "ъ", "Щ"   => "щ",
676:                 "Ш"     => "ш", "Ч"   => "ч", "Ц"   => "ц", "Х"   => "х", "Ф"   => "ф", "У"   => "у",
677:                 "Т"     => "т", "С"   => "с", "� " => "р", "П"   => "п", "О"   => "о", "Н"   => "н",
678:                 "М"     => "м", "Л"   => "л", "К"   => "к", "Й"   => "й", "И"   => "и", "З"   => "з",
679:                 "Ж"     => "ж", "Е"   => "е", "Д"   => "д", "Г"   => "г", "В"   => "в", "Б"   => "б",
680:                 "А"     => "а", "Џ"   => "џ", "Ў"   => "ў", "Ѝ"   => "ѝ", "Ќ"   => "ќ", "Ћ"   => "ћ",
681:                 "Њ"     => "њ", "Љ"   => "љ", "Ј"   => "ј", "Ї"   => "ї", "І"   => "і", "Ѕ"   => "ѕ",
682:                 "Є"     => "є", "Ѓ"   => "ѓ", "Ђ"   => "ђ", "Ё"   => "ё", "Ѐ"   => "ѐ", "ϴ"   => "θ",
683:                 "Ϯ"     => "ϯ", "Ϭ"   => "ϭ", "Ϫ"   => "ϫ", "Ϩ"   => "ϩ", "Ϧ"   => "ϧ", "Ϥ"   => "ϥ",
684:                 "Ϣ"     => "ϣ", "� " => "ϡ", "Ϟ"   => "ϟ", "Ϝ"   => "ϝ", "Ϛ"   => "ϛ", "Ϙ"   => "ϙ",
685:                 "Ϋ"     => "ϋ", "Ϊ"   => "ϊ", "Ω"   => "ω", "Ψ"   => "ψ", "Χ"   => "χ", "Φ"   => "φ",
686:                 "Υ"     => "υ", "Τ"   => "τ", "Σ"   => "σ", "Ρ"   => "ρ", "� " => "π", "Ο"   => "ο",
687:                 "Ξ"     => "ξ", "Ν"   => "ν", "Μ"   => "μ", "Λ"   => "λ", "Κ"   => "κ", "Ι"   => "ι",
688:                 "Θ"     => "θ", "Η"   => "η", "Ζ"   => "ζ", "Ε"   => "ε", "Δ"   => "δ", "Γ"   => "γ",
689:                 "Β"     => "β", "Α"   => "α", "Ώ"   => "ώ", "Ύ"   => "ύ", "Ό"   => "ό", "Ί"   => "ί",
690:                 "Ή"     => "ή", "Έ"   => "έ", "Ά"   => "ά", "Ȳ"   => "ȳ", "Ȱ"   => "ȱ", "Ȯ"   => "ȯ",
691:                 "Ȭ"     => "ȭ", "Ȫ"   => "ȫ", "Ȩ"   => "ȩ", "Ȧ"   => "ȧ", "Ȥ"   => "ȥ", "Ȣ"   => "ȣ",
692:                 "� " => "ƞ", "Ȟ"     => "ȟ", "Ȝ"   => "ȝ", "Ț"   => "ț", "Ș"   => "ș", "Ȗ"   => "ȗ",
693:                 "Ȕ"     => "ȕ", "Ȓ"   => "ȓ", "Ȑ"   => "ȑ", "Ȏ"   => "ȏ", "Ȍ"   => "ȍ", "Ȋ"   => "ȋ",
694:                 "Ȉ"     => "ȉ", "Ȇ"   => "ȇ", "Ȅ"   => "ȅ", "Ȃ"   => "ȃ", "Ȁ"   => "ȁ", "Ǿ"   => "ǿ",
695:                 "Ǽ"     => "ǽ", "Ǻ"   => "ǻ", "Ǹ"   => "ǹ", "Ƿ"   => "ƿ", "Ƕ"   => "ƕ", "Ǵ"   => "ǵ",
696:                 "DZ"     => "dz", "Ǯ"   => "ǯ", "Ǭ"   => "ǭ", "Ǫ"   => "ǫ", "Ǩ"   => "ǩ", "Ǧ"   => "ǧ",
697:                 "Ǥ"     => "ǥ", "Ǣ"   => "ǣ", "� " => "ǡ", "Ǟ"   => "ǟ", "Ǜ"   => "ǜ", "Ǚ"   => "ǚ",
698:                 "Ǘ"     => "ǘ", "Ǖ"   => "ǖ", "Ǔ"   => "ǔ", "Ǒ"   => "ǒ", "Ǐ"   => "ǐ", "Ǎ"   => "ǎ",
699:                 "NJ"     => "nj", "LJ"   => "lj", "DŽ"   => "dž", "Ƽ"   => "ƽ", "Ƹ"   => "ƹ", "Ʒ"   => "ʒ",
700:                 "Ƶ"     => "ƶ", "Ƴ"   => "ƴ", "Ʋ"   => "ʋ", "Ʊ"   => "ʊ", "Ư"   => "ư", "Ʈ"   => "ʈ",
701:                 "Ƭ"     => "ƭ", "Ʃ"   => "ʃ", "Ƨ"   => "ƨ", "Ʀ"   => "ʀ", "Ƥ"   => "ƥ", "Ƣ"   => "ƣ",
702:                 "� " => "ơ", "Ɵ"     => "ɵ", "Ɲ"   => "ɲ", "Ɯ"   => "ɯ", "Ƙ"   => "ƙ", "Ɨ"   => "ɨ",
703:                 "Ɩ"     => "ɩ", "Ɣ"   => "ɣ", "Ɠ"   => "� ", "Ƒ"     => "ƒ", "Ɛ"   => "ɛ", "Ə"   => "ə",
704:                 "Ǝ"     => "ǝ", "Ƌ"   => "ƌ", "Ɗ"   => "ɗ", "Ɖ"   => "ɖ", "Ƈ"   => "ƈ", "Ɔ"   => "ɔ",
705:                 "Ƅ"     => "ƅ", "Ƃ"   => "ƃ", "Ɓ"   => "ɓ", "Ž"   => "ž", "Ż"   => "ż", "Ź"   => "ź",
706:                 "Ÿ"     => "ÿ", "Ŷ"   => "ŷ", "Ŵ"   => "ŵ", "Ų"   => "ų", "Ű"   => "ű", "Ů"   => "ů",
707:                 "Ŭ"     => "ŭ", "Ū"   => "ū", "Ũ"   => "ũ", "Ŧ"   => "ŧ", "Ť"   => "ť", "Ţ"   => "ţ",
708:                 "� " => "š", "Ş"     => "ş", "Ŝ"   => "ŝ", "Ś"   => "ś", "Ř"   => "ř", "Ŗ"   => "ŗ",
709:                 "Ŕ"     => "ŕ", "Œ"   => "œ", "Ő"   => "ő", "Ŏ"   => "ŏ", "Ō"   => "ō", "Ŋ"   => "ŋ",
710:                 "Ň"     => "ň", "Ņ"   => "ņ", "Ń"   => "ń", "Ł"   => "ł", "Ŀ"   => "ŀ", "Ľ"   => "ľ",
711:                 "Ļ"     => "ļ", "Ĺ"   => "ĺ", "Ķ"   => "ķ", "Ĵ"   => "ĵ", "IJ"   => "ij", "İ"   => "i",
712:                 "Į"     => "į", "Ĭ"   => "ĭ", "Ī"   => "ī", "Ĩ"   => "ĩ", "Ħ"   => "ħ", "Ĥ"   => "ĥ",
713:                 "Ģ"     => "ģ", "� " => "ġ", "Ğ"   => "ğ", "Ĝ"   => "ĝ", "Ě"   => "ě", "Ę"   => "ę",
714:                 "Ė"     => "ė", "Ĕ"   => "ĕ", "Ē"   => "ē", "Đ"   => "đ", "Ď"   => "ď", "Č"   => "č",
715:                 "Ċ"     => "ċ", "Ĉ"   => "ĉ", "Ć"   => "ć", "Ą"   => "ą", "Ă"   => "ă", "Ā"   => "ā",
716:                 "Þ"     => "þ", "Ý"   => "ý", "Ü"   => "ü", "Û"   => "û", "Ú"   => "ú", "Ù"   => "ù",
717:                 "Ø"     => "ø", "Ö"   => "ö", "Õ"   => "õ", "Ô"   => "ô", "Ó"   => "ó", "Ò"   => "ò",
718:                 "Ñ"     => "ñ", "Ð"   => "ð", "Ï"   => "ï", "Î"   => "î", "Í"   => "í", "Ì"   => "ì",
719:                 "Ë"     => "ë", "Ê"   => "ê", "É"   => "é", "È"   => "è", "Ç"   => "ç", "Æ"   => "æ",
720:                 "Å"     => "å", "Ä"   => "ä", "Ã"   => "ã", "Â"   => "â", "Á"   => "á", "À"   => "� ",
721:                 "Z"  => "z", "Y"     => "y", "X"     => "x", "W"     => "w", "V"     => "v", "U"     => "u",
722:                 "T"  => "t", "S"     => "s", "R"     => "r", "Q"     => "q", "P"     => "p", "O"     => "o",
723:                 "N"  => "n", "M"     => "m", "L"     => "l", "K"     => "k", "J"     => "j", "I"     => "i",
724:                 "H"  => "h", "G"     => "g", "F"     => "f", "E"     => "e", "D"     => "d", "C"     => "c",
725:                 "B"  => "b", "A"     => "a"
726: );
727: 
728: 
729: $UTF8_TABLES['strtoupper'] = array(
730:                 "z"    => "Z", "y"     => "Y", "x"     => "X", "w"     => "W", "v"     => "V", "u"     => "U",
731:                 "t"    => "T", "s"     => "S", "r"     => "R", "q"     => "Q", "p"     => "P", "o"     => "O",
732:                 "n"    => "N", "m"     => "M", "l"     => "L", "k"     => "K", "j"     => "J", "i"     => "I",
733:                 "h"    => "H", "g"     => "G", "f"     => "F", "e"     => "E", "d"     => "D", "c"     => "C",
734:                 "b"    => "B", "a"     => "A", "ῳ"     => "ῼ", "ῥ"     => "Ῥ", "ῡ"     => "Ῡ", "� " => "Ῠ",
735:                 "ῑ"    => "Ῑ", "ῐ"     => "Ῐ", "ῃ"     => "ῌ", "ι"     => "Ι", "ᾳ"  => "ᾼ", "ᾱ"     => "Ᾱ",
736:                 "ᾰ"    => "Ᾰ", "ᾧ"     => "ᾯ", "ᾦ"     => "ᾮ", "ᾥ"     => "ᾭ", "ᾤ"     => "ᾬ", "ᾣ"     => "ᾫ",
737:                 "ᾢ"    => "ᾪ", "ᾡ"     => "ᾩ", "� " => "ᾨ", "ᾗ"    => "ᾟ", "ᾖ"     => "ᾞ", "ᾕ"     => "ᾝ",
738:                 "ᾔ"    => "ᾜ", "ᾓ"     => "ᾛ", "ᾒ"     => "ᾚ", "ᾑ"     => "ᾙ", "ᾐ"     => "ᾘ", "ᾇ"     => "ᾏ",
739:                 "ᾆ"    => "ᾎ", "ᾅ"     => "ᾍ", "ᾄ"     => "ᾌ", "ᾃ"     => "ᾋ", "ᾂ"     => "ᾊ", "ᾁ"     => "ᾉ",
740:                 "ᾀ"    => "ᾈ", "ώ"     => "Ώ", "ὼ"     => "Ὼ", "ύ"     => "Ύ", "ὺ"     => "Ὺ", "ό"     => "Ό",
741:                 "ὸ"    => "Ὸ", "ί"     => "Ί", "ὶ"     => "Ὶ", "ή"     => "Ή", "ὴ"     => "Ὴ", "έ"     => "Έ",
742:                 "ὲ"    => "Ὲ", "ά"     => "Ά", "ὰ"     => "Ὰ", "ὧ"     => "Ὧ", "ὦ"     => "Ὦ", "ὥ"     => "Ὥ",
743:                 "ὤ"    => "Ὤ", "ὣ"     => "Ὣ", "ὢ"     => "Ὢ", "ὡ"     => "Ὡ", "� " => "Ὠ", "ὗ"    => "Ὗ",
744:                 "ὕ"    => "Ὕ", "ὓ"     => "Ὓ", "ὑ"     => "Ὑ", "ὅ"     => "Ὅ", "ὄ"     => "Ὄ", "ὃ"     => "Ὃ",
745:                 "ὂ"    => "Ὂ", "ὁ"     => "Ὁ", "ὀ"     => "Ὀ", "ἷ"     => "Ἷ", "ἶ"     => "Ἶ", "ἵ"     => "Ἵ",
746:                 "ἴ"    => "Ἴ", "ἳ"     => "Ἳ", "ἲ"     => "Ἲ", "ἱ"     => "Ἱ", "ἰ"     => "Ἰ", "ἧ"     => "Ἧ",
747:                 "ἦ"    => "Ἦ", "ἥ"     => "Ἥ", "ἤ"     => "Ἤ", "ἣ"     => "Ἣ", "ἢ"     => "Ἢ", "ἡ"     => "Ἡ",
748:                 "� " => "Ἠ", "ἕ"   => "Ἕ", "ἔ"     => "Ἔ", "ἓ"     => "Ἓ", "ἒ"     => "Ἒ", "ἑ"     => "Ἑ",
749:                 "ἐ"    => "Ἐ", "ἇ"     => "Ἇ", "ἆ"     => "Ἆ", "ἅ"     => "Ἅ", "ἄ"     => "Ἄ", "ἃ"     => "Ἃ",
750:                 "ἂ"    => "Ἂ", "ἁ"     => "Ἁ", "ἀ"     => "Ἀ", "ỹ"     => "Ỹ", "ỷ"     => "Ỷ", "ỵ"     => "Ỵ",
751:                 "ỳ"    => "Ỳ", "ự"     => "Ự", "ữ"     => "Ữ", "ử"     => "Ử", "ừ"     => "Ừ", "ứ"     => "Ứ",
752:                 "ủ"    => "Ủ", "ụ"     => "Ụ", "ợ"     => "Ợ", "ỡ"     => "� ", "ở"    => "Ở", "ờ"     => "Ờ",
753:                 "ớ"    => "Ớ", "ộ"     => "Ộ", "ỗ"     => "Ỗ", "ổ"     => "Ổ", "ồ"     => "Ồ", "ố"     => "Ố",
754:                 "ỏ"    => "Ỏ", "ọ"     => "Ọ", "ị"     => "Ị", "ỉ"     => "Ỉ", "ệ"     => "Ệ", "ễ"     => "Ễ",
755:                 "ể"    => "Ể", "ề"     => "Ề", "ế"     => "Ế", "ẽ"     => "Ẽ", "ẻ"     => "Ẻ", "ẹ"     => "Ẹ",
756:                 "ặ"    => "Ặ", "ẵ"     => "Ẵ", "ẳ"     => "Ẳ", "ằ"     => "Ằ", "ắ"     => "Ắ", "ậ"     => "Ậ",
757:                 "ẫ"    => "Ẫ", "ẩ"     => "Ẩ", "ầ"     => "Ầ", "ấ"     => "Ấ", "ả"     => "Ả", "ạ"     => "� ",
758:                 "ẛ"    => "� ", "ẕ"    => "Ẕ", "ẓ"     => "Ẓ", "ẑ"     => "Ẑ", "ẏ"     => "Ẏ", "ẍ"     => "Ẍ",
759:                 "ẋ"    => "Ẋ", "ẉ"     => "Ẉ", "ẇ"     => "Ẇ", "ẅ"     => "Ẅ", "ẃ"     => "Ẃ", "ẁ"     => "Ẁ",
760:                 "ṿ"    => "Ṿ", "ṽ"     => "Ṽ", "ṻ"     => "Ṻ", "ṹ"     => "Ṹ", "ṷ"     => "Ṷ", "ṵ"     => "Ṵ",
761:                 "ṳ"    => "Ṳ", "ṱ"     => "Ṱ", "ṯ"     => "Ṯ", "ṭ"     => "Ṭ", "ṫ"     => "Ṫ", "ṩ"     => "Ṩ",
762:                 "ṧ"    => "Ṧ", "ṥ"     => "Ṥ", "ṣ"     => "Ṣ", "ṡ"     => "� ", "ṟ"    => "Ṟ", "ṝ"     => "Ṝ",
763:                 "ṛ"    => "Ṛ", "ṙ"     => "Ṙ", "ṗ"     => "Ṗ", "ṕ"     => "Ṕ", "ṓ"     => "Ṓ", "ṑ"     => "Ṑ",
764:                 "ṏ"    => "Ṏ", "ṍ"     => "Ṍ", "ṋ"     => "Ṋ", "ṉ"     => "Ṉ", "ṇ"     => "Ṇ", "ṅ"     => "Ṅ",
765:                 "ṃ"    => "Ṃ", "ṁ"     => "Ṁ", "ḿ"     => "Ḿ", "ḽ"     => "Ḽ", "ḻ"     => "Ḻ", "ḹ"     => "Ḹ",
766:                 "ḷ"    => "Ḷ", "ḵ"     => "Ḵ", "ḳ"     => "Ḳ", "ḱ"     => "Ḱ", "ḯ"     => "Ḯ", "ḭ"     => "Ḭ",
767:                 "ḫ"    => "Ḫ", "ḩ"     => "Ḩ", "ḧ"     => "Ḧ", "ḥ"     => "Ḥ", "ḣ"     => "Ḣ", "ḡ"     => "� ",
768:                 "ḟ"    => "Ḟ", "ḝ"     => "Ḝ", "ḛ"     => "Ḛ", "ḙ"     => "Ḙ", "ḗ"     => "Ḗ", "ḕ"     => "Ḕ",
769:                 "ḓ"    => "Ḓ", "ḑ"     => "Ḑ", "ḏ"     => "Ḏ", "ḍ"     => "Ḍ", "ḋ"     => "Ḋ", "ḉ"     => "Ḉ",
770:                 "ḇ"    => "Ḇ", "ḅ"     => "Ḅ", "ḃ"     => "Ḃ", "ḁ"     => "Ḁ", "ֆ"  => "Ֆ", "օ"   => "Օ",
771:                 "ք"     => "Ք", "փ"   => "Փ", "ւ"   => "Ւ", "ց"   => "Ց", "ր"   => "Ր", "տ"   => "Տ",
772:                 "վ"     => "Վ", "ս"   => "Ս", "ռ"   => "Ռ", "ջ"   => "Ջ", "պ"   => "Պ", "չ"   => "Չ",
773:                 "ո"     => "Ո", "շ"   => "Շ", "ն"   => "Ն", "յ"   => "Յ", "մ"   => "Մ", "ճ"   => "Ճ",
774:                 "ղ"     => "Ղ", "ձ"   => "Ձ", "հ"   => "Հ", "կ"   => "Կ", "ծ"   => "Ծ", "խ"   => "Խ",
775:                 "լ"     => "Լ", "ի"   => "Ի", "ժ"   => "Ժ", "թ"   => "Թ", "ը"   => "Ը", "է"   => "Է",
776:                 "զ"     => "Զ", "ե"   => "Ե", "դ"   => "Դ", "գ"   => "Գ", "բ"   => "Բ", "ա"   => "Ա",
777:                 "ԏ"     => "Ԏ", "ԍ"   => "Ԍ", "ԋ"   => "Ԋ", "ԉ"   => "Ԉ", "ԇ"   => "Ԇ", "ԅ"   => "Ԅ",
778:                 "ԃ"     => "Ԃ", "ԁ"   => "Ԁ", "ӹ"   => "Ӹ", "ӵ"   => "Ӵ", "ӳ"   => "Ӳ", "ӱ"   => "Ӱ",
779:                 "ӯ"     => "Ӯ", "ӭ"   => "Ӭ", "ӫ"   => "Ӫ", "ө"   => "Ө", "ӧ"   => "Ӧ", "ӥ"   => "Ӥ",
780:                 "ӣ"     => "Ӣ", "ӡ"   => "� ", "ӟ"     => "Ӟ", "ӝ"   => "Ӝ", "ӛ"   => "Ӛ", "ә"   => "Ә",
781:                 "ӗ"     => "Ӗ", "ӕ"   => "Ӕ", "ӓ"   => "Ӓ", "ӑ"   => "Ӑ", "ӎ"   => "Ӎ", "ӌ"   => "Ӌ",
782:                 "ӊ"     => "Ӊ", "ӈ"   => "Ӈ", "ӆ"   => "Ӆ", "ӄ"   => "Ӄ", "ӂ"   => "Ӂ", "ҿ"   => "Ҿ",
783:                 "ҽ"     => "Ҽ", "һ"   => "Һ", "ҹ"   => "Ҹ", "ҷ"   => "Ҷ", "ҵ"   => "Ҵ", "ҳ"   => "Ҳ",
784:                 "ұ"     => "Ұ", "ү"   => "Ү", "ҭ"   => "Ҭ", "ҫ"   => "Ҫ", "ҩ"   => "Ҩ", "ҧ"   => "Ҧ",
785:                 "ҥ"     => "Ҥ", "ң"   => "Ң", "ҡ"   => "� ", "ҟ"     => "Ҟ", "ҝ"   => "Ҝ", "қ"   => "Қ",
786:                 "ҙ"     => "Ҙ", "җ"   => "Җ", "ҕ"   => "Ҕ", "ғ"   => "Ғ", "ґ"   => "Ґ", "ҏ"   => "Ҏ",
787:                 "ҍ"     => "Ҍ", "ҋ"   => "Ҋ", "ҁ"   => "Ҁ", "ѿ"   => "Ѿ", "ѽ"   => "Ѽ", "ѻ"   => "Ѻ",
788:                 "ѹ"     => "Ѹ", "ѷ"   => "Ѷ", "ѵ"   => "Ѵ", "ѳ"   => "Ѳ", "ѱ"   => "Ѱ", "ѯ"   => "Ѯ",
789:                 "ѭ"     => "Ѭ", "ѫ"   => "Ѫ", "ѩ"   => "Ѩ", "ѧ"   => "Ѧ", "ѥ"   => "Ѥ", "ѣ"   => "Ѣ",
790:                 "ѡ"     => "� ", "џ"     => "Џ", "ў"   => "Ў", "ѝ"   => "Ѝ", "ќ"   => "Ќ", "ћ"   => "Ћ",
791:                 "њ"     => "Њ", "љ"   => "Љ", "ј"   => "Ј", "ї"   => "Ї", "і"   => "І", "ѕ"   => "Ѕ",
792:                 "є"     => "Є", "ѓ"   => "Ѓ", "ђ"   => "Ђ", "ё"   => "Ё", "ѐ"   => "Ѐ", "я"   => "Я",
793:                 "ю"     => "Ю", "э"   => "Э", "ь"   => "Ь", "ы"   => "Ы", "ъ"   => "Ъ", "щ"   => "Щ",
794:                 "ш"     => "Ш", "ч"   => "Ч", "ц"   => "Ц", "х"   => "Х", "ф"   => "Ф", "у"   => "У",
795:                 "т"     => "Т", "с"   => "С", "р"   => "� ", "п"     => "П", "о"   => "О", "н"   => "Н",
796:                 "м"     => "М", "л"   => "Л", "к"   => "К", "й"   => "Й", "и"   => "И", "з"   => "З",
797:                 "ж"     => "Ж", "е"   => "Е", "д"   => "Д", "г"   => "Г", "в"   => "В", "б"   => "Б",
798:                 "а"     => "А", "ϵ"   => "Ε", "ϲ"   => "Σ", "ϱ"   => "Ρ", "ϰ"   => "Κ", "ϯ"   => "Ϯ",
799:                 "ϭ"     => "Ϭ", "ϫ"   => "Ϫ", "ϩ"   => "Ϩ", "ϧ"   => "Ϧ", "ϥ"   => "Ϥ", "ϣ"   => "Ϣ",
800:                 "ϡ"     => "� ", "ϟ"     => "Ϟ", "ϝ"   => "Ϝ", "ϛ"   => "Ϛ", "ϙ"   => "Ϙ", "ϖ"   => "� ",
801:                 "ϕ"     => "Φ", "ϑ"   => "Θ", "ϐ"   => "Β", "ώ"   => "Ώ", "ύ"   => "Ύ", "ό"   => "Ό",
802:                 "ϋ"     => "Ϋ", "ϊ"   => "Ϊ", "ω"   => "Ω", "ψ"   => "Ψ", "χ"   => "Χ", "φ"   => "Φ",
803:                 "υ"     => "Υ", "τ"   => "Τ", "σ"   => "Σ", "ς"   => "Σ", "ρ"   => "Ρ", "π"   => "� ",
804:                 "ο"     => "Ο", "ξ"   => "Ξ", "ν"   => "Ν", "μ"   => "Μ", "λ"   => "Λ", "κ"   => "Κ",
805:                 "ι"     => "Ι", "θ"   => "Θ", "η"   => "Η", "ζ"   => "Ζ", "ε"   => "Ε", "δ"   => "Δ",
806:                 "γ"     => "Γ", "β"   => "Β", "α"   => "Α", "ί"   => "Ί", "ή"   => "Ή", "έ"   => "Έ",
807:                 "ά"     => "Ά", "ʒ"   => "Ʒ", "ʋ"   => "Ʋ", "ʊ"   => "Ʊ", "ʈ"   => "Ʈ", "ʃ"   => "Ʃ",
808:                 "ʀ"     => "Ʀ", "ɵ"   => "Ɵ", "ɲ"   => "Ɲ", "ɯ"   => "Ɯ", "ɩ"   => "Ɩ", "ɨ"   => "Ɨ",
809:                 "ɣ"     => "Ɣ", "� " => "Ɠ", "ɛ"   => "Ɛ", "ə"   => "Ə", "ɗ"   => "Ɗ", "ɖ"   => "Ɖ",
810:                 "ɔ"     => "Ɔ", "ɓ"   => "Ɓ", "ȳ"   => "Ȳ", "ȱ"   => "Ȱ", "ȯ"   => "Ȯ", "ȭ"   => "Ȭ",
811:                 "ȫ"     => "Ȫ", "ȩ"   => "Ȩ", "ȧ"   => "Ȧ", "ȥ"   => "Ȥ", "ȣ"   => "Ȣ", "ȟ"   => "Ȟ",
812:                 "ȝ"     => "Ȝ", "ț"   => "Ț", "ș"   => "Ș", "ȗ"   => "Ȗ", "ȕ"   => "Ȕ", "ȓ"   => "Ȓ",
813:                 "ȑ"     => "Ȑ", "ȏ"   => "Ȏ", "ȍ"   => "Ȍ", "ȋ"   => "Ȋ", "ȉ"   => "Ȉ", "ȇ"   => "Ȇ",
814:                 "ȅ"     => "Ȅ", "ȃ"   => "Ȃ", "ȁ"   => "Ȁ", "ǿ"   => "Ǿ", "ǽ"   => "Ǽ", "ǻ"   => "Ǻ",
815:                 "ǹ"     => "Ǹ", "ǵ"   => "Ǵ", "dz"   => "Dz", "ǯ"   => "Ǯ", "ǭ"   => "Ǭ", "ǫ"   => "Ǫ",
816:                 "ǩ"     => "Ǩ", "ǧ"   => "Ǧ", "ǥ"   => "Ǥ", "ǣ"   => "Ǣ", "ǡ"   => "� ", "ǟ"     => "Ǟ",
817:                 "ǝ"     => "Ǝ", "ǜ"   => "Ǜ", "ǚ"   => "Ǚ", "ǘ"   => "Ǘ", "ǖ"   => "Ǖ", "ǔ"   => "Ǔ",
818:                 "ǒ"     => "Ǒ", "ǐ"   => "Ǐ", "ǎ"   => "Ǎ", "nj"   => "Nj", "lj"   => "Lj", "dž"   => "Dž",
819:                 "ƿ"     => "Ƿ", "ƽ"   => "Ƽ", "ƹ"   => "Ƹ", "ƶ"   => "Ƶ", "ƴ"   => "Ƴ", "ư"   => "Ư",
820:                 "ƭ"     => "Ƭ", "ƨ"   => "Ƨ", "ƥ"   => "Ƥ", "ƣ"   => "Ƣ", "ơ"   => "� ", "ƞ"     => "� ",
821:                 "ƙ"     => "Ƙ", "ƕ"   => "Ƕ", "ƒ"   => "Ƒ", "ƌ"   => "Ƌ", "ƈ"   => "Ƈ", "ƅ"   => "Ƅ",
822:                 "ƃ"     => "Ƃ", "ſ"   => "S", "ž"    => "Ž", "ż"   => "Ż", "ź"   => "Ź", "ŷ"   => "Ŷ",
823:                 "ŵ"     => "Ŵ", "ų"   => "Ų", "ű"   => "Ű", "ů"   => "Ů", "ŭ"   => "Ŭ", "ū"   => "Ū",
824:                 "ũ"     => "Ũ", "ŧ"   => "Ŧ", "ť"   => "Ť", "ţ"   => "Ţ", "š"   => "� ", "ş"     => "Ş",
825:                 "ŝ"     => "Ŝ", "ś"   => "Ś", "ř"   => "Ř", "ŗ"   => "Ŗ", "ŕ"   => "Ŕ", "œ"   => "Œ",
826:                 "ő"     => "Ő", "ŏ"   => "Ŏ", "ō"   => "Ō", "ŋ"   => "Ŋ", "ň"   => "Ň", "ņ"   => "Ņ",
827:                 "ń"     => "Ń", "ł"   => "Ł", "ŀ"   => "Ŀ", "ľ"   => "Ľ", "ļ"   => "Ļ", "ĺ"   => "Ĺ",
828:                 "ķ"     => "Ķ", "ĵ"   => "Ĵ", "ij"   => "IJ", "ı"   => "I", "į"    => "Į", "ĭ"   => "Ĭ",
829:                 "ī"     => "Ī", "ĩ"   => "Ĩ", "ħ"   => "Ħ", "ĥ"   => "Ĥ", "ģ"   => "Ģ", "ġ"   => "� ",
830:                 "ğ"     => "Ğ", "ĝ"   => "Ĝ", "ě"   => "Ě", "ę"   => "Ę", "ė"   => "Ė", "ĕ"   => "Ĕ",
831:                 "ē"     => "Ē", "đ"   => "Đ", "ď"   => "Ď", "č"   => "Č", "ċ"   => "Ċ", "ĉ"   => "Ĉ",
832:                 "ć"     => "Ć", "ą"   => "Ą", "ă"   => "Ă", "ā"   => "Ā", "ÿ"   => "Ÿ", "þ"   => "Þ",
833:                 "ý"     => "Ý", "ü"   => "Ü", "û"   => "Û", "ú"   => "Ú", "ù"   => "Ù", "ø"   => "Ø",
834:                 "ö"     => "Ö", "õ"   => "Õ", "ô"   => "Ô", "ó"   => "Ó", "ò"   => "Ò", "ñ"   => "Ñ",
835:                 "ð"     => "Ð", "ï"   => "Ï", "î"   => "Î", "í"   => "Í", "ì"   => "Ì", "ë"   => "Ë",
836:                 "ê"     => "Ê", "é"   => "É", "è"   => "È", "ç"   => "Ç", "æ"   => "Æ", "å"   => "Å",
837:                 "ä"     => "Ä", "ã"   => "Ã", "â"   => "Â", "á"   => "Á", "� " => "À", "µ"   => "Μ",
838:                 "z"  => "Z", "y"     => "Y", "x"     => "X", "w"     => "W", "v"     => "V", "u"     => "U",
839:                 "t"  => "T", "s"     => "S", "r"     => "R", "q"     => "Q", "p"     => "P", "o"     => "O",
840:                 "n"  => "N", "m"     => "M", "l"     => "L", "k"     => "K", "j"     => "J", "i"     => "I",
841:                 "h"  => "H", "g"     => "G", "f"     => "F", "e"     => "E", "d"     => "D", "c"     => "C",
842:                 "b"  => "B", "a"     => "A"
843: );
844: 
845: /**
846:  * Multi-byte string support
847:  */
848: if (!function_exists('mb_internal_encoding')) {
849: 
850:     function mb_strtolower($str) {
851:         return utf8::strtolower($str);
852:     }
853: 
854:     function mb_strtoupper($str) {
855:         return utf8::strtoupper($str);
856:     }
857: 
858:     function mb_strlen($str) {
859:         return utf8::strlen($str);
860:     }
861: 
862:     function mb_substr($str, $start, $length = NULL) {
863:         return utf8::substr($str, $start, $length);
864:     }
865: 
866:     function mb_strrpos($haystack, $needle) {
867:         return utf8::strrpos($haystack, $needle);
868:     }
869: 
870:     function mb_strpos($haystack, $needle, $offset = 0) {
871:         return utf8::strpos($haystack, $needle, $offset);
872:     }
873: 
874:     function mb_substr_count($haystack, $needle) {
875:         return utf8::substr_count($haystack, $needle);
876:     }
877: 
878: }
879: ?>
880: 
Zenphoto doc API documentation generated by ApiGen