0byt3m1n1-V2
Path:
/
home
/
magalijoj
/
www
/
blog
/
inc
/
clearbricks
/
common
/
[
Home
]
File: lib.text.php
<?php # ***** BEGIN LICENSE BLOCK ***** # This file is part of Clearbricks. # Copyright (c) 2006 Olivier Meunier and contributors. All rights # reserved. # # Clearbricks is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # Clearbricks is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with Clearbricks; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ***** END LICENSE BLOCK ***** class text { /** @function isEmail Checks if "email" var is a valid email address. Changed code, from http://www.iamcal.com/publish/articles/php/parsing_email/ @param email string Email string @return boolean */ public static function isEmail($email) { $qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'; $dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'; $atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'; $quoted_pair = '\\x5c[\\x00-\\x7f]'; $domain_literal = "\\x5b($dtext|$quoted_pair)*\\x5d"; $quoted_string = "\\x22($qtext|$quoted_pair)*\\x22"; $domain_ref = $atom; $sub_domain = "($domain_ref|$domain_literal)"; $word = "($atom|$quoted_string)"; $domain = "$sub_domain(\\x2e$sub_domain)*"; $local_part = "$word(\\x2e$word)*"; $addr_spec = "$local_part\\x40$domain"; return (boolean) preg_match("!^$addr_spec$!", $email); } /** @function str2URL Transforms a string to a proper URL. @param str string String to transform @param with_slashes boolean Keep slashes in URL @return string */ public static function str2URL($str,$with_slashes=true) { $pattern['A'] = '\x{00C0}-\x{00C5}'; $pattern['AE'] = '\x{00C6}'; $pattern['C'] = '\x{00C7}'; $pattern['D'] = '\x{00D0}'; $pattern['E'] = '\x{00C8}-\x{00CB}'; $pattern['I'] = '\x{00CC}-\x{00CF}'; $pattern['N'] = '\x{00D1}'; $pattern['O'] = '\x{00D2}-\x{00D6}\x{00D8}'; $pattern['OE'] = '\x{0152}'; $pattern['S'] = '\x{0160}'; $pattern['U'] = '\x{00D9}-\x{00DC}'; $pattern['Y'] = '\x{00DD}'; $pattern['Z'] = '\x{017D}'; $pattern['a'] = '\x{00E0}-\x{00E5}'; $pattern['ae'] = '\x{00E6}'; $pattern['c'] = '\x{00E7}'; $pattern['d'] = '\x{00F0}'; $pattern['e'] = '\x{00E8}-\x{00EB}'; $pattern['i'] = '\x{00EC}-\x{00EF}'; $pattern['n'] = '\x{00F1}'; $pattern['o'] = '\x{00F2}-\x{00F6}\x{00F8}'; $pattern['oe'] = '\x{0153}'; $pattern['s'] = '\x{0161}'; $pattern['u'] = '\x{00F9}-\x{00FC}'; $pattern['y'] = '\x{00FD}\x{00FF}'; $pattern['z'] = '\x{017E}'; $pattern['ss'] = '\x{00DF}'; foreach ($pattern as $r => $p) { $str = preg_replace('/['.$p.']/u',$r,$str); } $str = preg_replace('/[^A-Za-z0-9_\s\'\:\/[\]-]/','',$str); return self::tidyURL($str,$with_slashes); } /** @function tidyURL Cleans an URL. @param str string URL to tidy @param keep_slashes boolean Keep slashes in URL @param keep_spaces boolean Keep spaces in URL @return string */ public static function tidyURL($str,$keep_slashes=true,$keep_spaces=false) { $str = strip_tags($str); $str = str_replace(array('?','&','#','=','+','<','>'),'',$str); $str = str_replace("'",'',$str); $str = preg_replace('/[\s]+/',' ',trim($str)); if (!$keep_slashes) { $str = str_replace('/','-',$str); } if (!$keep_spaces) { $str = str_replace(' ','-',$str); } $str = preg_replace('/[-]+/','-',$str); # Remove path changes in URL $str = preg_replace('%^/%','',$str); $str = preg_replace('%\.+/%','',$str); return $str; } /** @function cutString Cuts a string on spaces. @param string str String to cut @param integer l Lenght to keep @return string */ public static function cutString($str,$l) { $s = preg_split('/([\s]+)/u',$str,-1,PREG_SPLIT_DELIM_CAPTURE); $res = ''; $L = 0; if (strlen($s[0]) >= $l) { return substr($s[0],0,$l); } foreach ($s as $v) { $L = $L+strlen($v); if ($L > $l) { break; } else { $res .= $v; } } return trim($res); } /** @function splitWords Returns an array of words from a given string. @param str string Words to split @return array */ public static function splitWords($str) { $non_word = '\x{0000}-\x{002F}\x{003A}-\x{0040}\x{005b}-\x{0060}\x{007B}-\x{007E}\x{00A0}-\x{00BF}\s'; if (preg_match_all('/([^'.$non_word.']{3,})/msu',html::clean($str),$match)) { foreach ($match[1] as $i => $v) { $match[1][$i] = mb_strtolower($v); } return $match[1]; } return array(); } /** @function detectEncoding Returns the encoding (in lowercase) of given $str. @param str string String @return string */ public static function detectEncoding($str) { return strtolower(mb_detect_encoding($str.' ', 'UTF-8,ISO-8859-1,ISO-8859-2,ISO-8859-3,'. 'ISO-8859-4,ISO-8859-5,ISO-8859-6,ISO-8859-7,ISO-8859-8,'. 'ISO-8859-9,ISO-8859-10,ISO-8859-13,ISO-8859-14,ISO-8859-15')); } /** @function toUTF8 Return an UTF-8 converted string. @param str string String to convert @param encoding string Optionnal "from" encoding @return string */ public static function toUTF8($str,$encoding=null) { if (!$encoding) { $encoding = self::detectEncoding($str); } if ($encoding != 'utf-8') { $str = iconv($encoding,'UTF-8',$str); } return $str; } /** @function utf8badFind Taken from http://phputf8.sourceforge.net Locates the first bad byte in a UTF-8 string returning it's byte index in the string PCRE Pattern to locate bad bytes in a UTF-8 string Comes from W3 FAQ: Multilingual Forms Note: modified to include full ASCII range including control chars @param str string String to search @return mixed */ public static function utf8badFind($str) { $UTF8_BAD = '([\x00-\x7F]'. # ASCII (including control chars) '|[\xC2-\xDF][\x80-\xBF]'. # non-overlong 2-byte '|\xE0[\xA0-\xBF][\x80-\xBF]'. # excluding overlongs '|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}'. # straight 3-byte '|\xED[\x80-\x9F][\x80-\xBF]'. # excluding surrogates '|\xF0[\x90-\xBF][\x80-\xBF]{2}'. # planes 1-3 '|[\xF1-\xF3][\x80-\xBF]{3}'. # planes 4-15 '|\xF4[\x80-\x8F][\x80-\xBF]{2}'. # plane 16 '|(.{1}))'; # invalid byte $pos = 0; $badList = array(); while (preg_match('/'.$UTF8_BAD.'/S', $str, $matches)) { $bytes = strlen($matches[0]); if ( isset($matches[2])) { return $pos; } $pos += $bytes; $str = substr($str,$bytes); } return false; } /** @function cleanUTF8 Taken from http://phputf8.sourceforge.net/ Replace non utf8 bytes in $str by $repl. @param str string String to clean @param repl string Replacement string @return string */ public static function cleanUTF8($str,$repl='?') { while (($bad_index = self::utf8badFind($str)) !== false) { $str = substr_replace($str,$repl,$bad_index,1); } return $str; } /** @function removeBOM Removes BOM from the begining of a string if present. @param str string String to clean @return string */ public static function removeBOM($str) { if (substr_count($str,'')) { return str_replace('','',$str); } return $str; } /** @function QPEncode Encodes given str to quoted printable @param str string String to encode @return string */ public static function QPEncode($str) { $res = ''; foreach (preg_split("/\r?\n/msu", $str) as $line) { $l = ''; preg_match_all('/./',$line,$m); foreach ($m[0] as $c) { $a = ord($c); if ($a < 32 || $a == 61 || $a > 126) { $c = sprintf('=%02X',$a); } $l .= $c; } $res .= $l."\r\n"; } return $res; } } ?>
©
2018.