OpenXE/phpwf/plugins/class.string.php
2021-05-21 08:49:41 +02:00

444 lines
13 KiB
PHP
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
**** COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*
* Xentral (c) Xentral ERP Sorftware GmbH, Fuggerstrasse 11, D-86150 Augsburg, * Germany 2019
*
* This file is licensed under the Embedded Projects General Public License *Version 3.1.
*
* You should have received a copy of this license from your vendor and/or *along with this file; If not, please visit www.wawision.de/Lizenzhinweis
* to obtain the text of the corresponding license version.
*
**** END OF COPYRIGHT & LICENSE NOTICE *** DO NOT REMOVE ****
*/
?>
<?php
class WawiString
{
function __construct()
{
}
function Convert($value,$input,$output)
{
if($input=="")
return $value;
/*if (strpos($a, '\\') !== false)
$input = str_replace('/','\/',$input);*/
$array = $this->FindPercentValues($input);
$regexp = $this->BuildRegExp($array);
$elements =
preg_split($regexp,$value,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
// input und elements stimmmen ueberein
$newout = $output;
$i = 0;
foreach($array as $key=>$value)
{
$newout = str_replace($key,isset($elements[$i])?$elements[$i]:'',$newout);
$i++;
}
return $newout;
}
/**
* @param string $string
*
* @return string
*/
public function removeUtf8Bom($string) {
if(!is_string($string) || strlen($string)< 3) {
return $string;
}
if(ord($string[0]) === 239 && ord($string[1]) === 187 && ord($string[2]) === 191) {
return substr($string,3);
}
return $string;
}
function BuildRegExp($array)
{
$regexp = '/^';
foreach($array as $value)
{
$value = str_replace('.','\.',$value);
$value = str_replace('+','\+',$value);
$value = str_replace('*','\*',$value);
$value = str_replace('?','\?',$value);
$regexp .= '(\S+)'.$value;
}
$regexp .= '/';
return $regexp;
}
function FindPercentValues($pattern)
{
preg_match_all('/(?:(%[0-9]+)|.)/i', $pattern, $matches);
$hash = '';
$collect = '';
$start = true;
foreach($matches[1] as $key=>$value)
{
if($value=="")
$collecting = true;
else
{
$collecting = false;
$oldhash = isset($hash)?$hash:null;
$hash = $value;
}
if(!$collecting)
{
if(!$start)
$replace[$oldhash] = $collect;
$collect="";
}
else
$collect .=$matches[0][$key];
$start = false;
}
$replace[$hash] = $collect;
return $replace;
}
function encodeText($string)
{
$string = str_replace("\\r\\n","#BR#",$string);
$string = str_replace("\n","#BR#",$string);
$encoded = htmlspecialchars(stripslashes($string), ENT_QUOTES);
return $encoded;
}
function decodeText($_str, $_form=true)
{
if ($_form) {
$_str = str_replace("#BR#", "\r\n", $_str);
}
else {
$_str = str_replace("#BR#", "<br>", $_str);
}
return($_str);
}
function valid_utf8( $string )
{
return !((bool)preg_match('~\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF\xC0\xC1~ms',$string));
}
/**
* @param mixed $text
*
* @return string
*/
public function fixeUmlaute($text) {
if(!is_string($text)) {
return $text;
}
$umlaute = $this->getUmlauteArray();
return str_replace(array_keys($umlaute),array_values($umlaute), $text);
}
/**
* @return array
*/
public function getUmlauteArray() {
return array( 'ü'=>'ü', 'ä'=>'ä', 'ö'=>'ö', 'Ö'=>'Ö', 'Ã?'=>'ß','ß'=>'ß', 'à '=>'à', 'á'=>'á', 'â'=>'â', 'ã'=>'ã', 'ù'=>'ù', 'ú'=>'ú', 'û'=>'û', 'Ù'=>'Ù', 'Ú'=>'Ú', 'Û'=>'Û', 'Ãœ'=>'Ü', 'ò'=>'ò', 'ó'=>'ó', 'ô'=>'ô', 'è'=>'è', 'é'=>'é', 'ê'=>'ê', 'ë'=>'ë', 'À'=>'À', 'Ã<81>'=>'Á', 'Â'=>'Â', 'Ã'=>'Ã', 'Ä'=>'Ä', 'Ã…'=>'Å', 'Ç'=>'Ç', 'È'=>'È', 'É'=>'É', 'Ê'=>'Ê', 'Ë'=>'Ë', 'ÃŒ'=>'Ì', 'Ã<8d>'=>'Í', 'ÃŽ'=>'Î', 'Ã<8f>'=>'Ï', 'Ñ'=>'Ñ', 'Ã’'=>'Ò', 'Ó'=>'Ó', 'Ô'=>'Ô', 'Õ'=>'Õ', 'Ø'=>'Ø', 'Ã¥'=>'å', 'æ'=>'æ', 'ç'=>'ç', 'ì'=>'ì', 'í'=>'í', 'î'=>'î', 'ï'=>'ï', 'ð'=>'ð', 'ñ'=>'ñ', 'õ'=>'õ', 'ø'=>'ø', 'ý'=>'ý', 'ÿ'=>'ÿ', '€'=>'€' );
}
function unicode_decode($content) {
$ISO10646XHTMLTrans = array(
"&"."#34;" => "&quot;",
"&"."#38;" => "&amp;",
"&"."#39;" => "&apos;",
"&"."#60;" => "&lt;",
"&"."#62;" => "&gt;",
"&"."#128;" => "&euro;",
"&"."#160;" => "",
"&"."#161;" => "&iexcl;",
"&"."#162;" => "&cent;",
"&"."#163;" => "&pound;",
"&"."#164;" => "&curren;",
"&"."#165;" => "&yen;",
"&"."#166;" => "&brvbar;",
"&"."#167;" => "&sect;",
"&"."#168;" => "&uml;",
"&"."#169;" => "&copy;",
"&"."#170;" => "&ordf;",
"&"."#171;" => "&laquo;",
"&"."#172;" => "&not;",
"&"."#173;" => "­",
"&"."#174;" => "&reg;",
"&"."#175;" => "&macr;",
"&"."#176;" => "&deg;",
"&"."#177;" => "&plusmn;",
"&"."#178;" => "&sup2;",
"&"."#179;" => "&sup3;",
"&"."#180;" => "&acute;",
"&"."#181;" => "&micro;",
"&"."#182;" => "&para;",
"&"."#183;" => "&middot;",
"&"."#184;" => "&cedil;",
"&"."#185;" => "&sup1;",
"&"."#186;" => "&ordm;",
"&"."#187;" => "&raquo;",
"&"."#188;" => "&frac14;",
"&"."#189;" => "&frac12;",
"&"."#190;" => "&frac34;",
"&"."#191;" => "&iquest;",
"&"."#192;" => "&Agrave;",
"&"."#193;" => "&Aacute;",
"&"."#194;" => "&Acirc;",
"&"."#195;" => "&Atilde;",
"&"."#196;" => "&Auml;",
"&"."#197;" => "&Aring;",
"&"."#198;" => "&AElig;",
"&"."#199;" => "&Ccedil;",
"&"."#200;" => "&Egrave;",
"&"."#201;" => "&Eacute;",
"&"."#202;" => "&Ecirc;",
"&"."#203;" => "&Euml;",
"&"."#204;" => "&Igrave;",
"&"."#205;" => "&Iacute;",
"&"."#206;" => "&Icirc;",
"&"."#207;" => "&Iuml;",
"&"."#208;" => "&ETH;",
"&"."#209;" => "&Ntilde;",
"&"."#210;" => "&Ograve;",
"&"."#211;" => "&Oacute;",
"&"."#212;" => "&Ocirc;",
"&"."#213;" => "&Otilde;",
"&"."#214;" => "&Ouml;",
"&"."#215;" => "&times;",
"&"."#216;" => "&Oslash;",
"&"."#217;" => "&Ugrave;",
"&"."#218;" => "&Uacute;",
"&"."#219;" => "&Ucirc;",
"&"."#220;" => "&Uuml;",
"&"."#221;" => "&Yacute;",
"&"."#222;" => "&THORN;",
"&"."#223;" => "&szlig;",
"&"."#224;" => "&agrave;",
"&"."#225;" => "&aacute;",
"&"."#226;" => "&acirc;",
"&"."#227;" => "&atilde;",
"&"."#228;" => "&auml;",
"&"."#229;" => "&aring;",
"&"."#230;" => "&aelig;",
"&"."#231;" => "&ccedil;",
"&"."#232;" => "&egrave;",
"&"."#233;" => "&eacute;",
"&"."#234;" => "&ecirc;",
"&"."#235;" => "&euml;",
"&"."#236;" => "&igrave;",
"&"."#237;" => "&iacute;",
"&"."#238;" => "&icirc;",
"&"."#239;" => "&iuml;",
"&"."#240;" => "&eth;",
"&"."#241;" => "&ntilde;",
"&"."#242;" => "&ograve;",
"&"."#243;" => "&oacute;",
"&"."#244;" => "&ocirc;",
"&"."#245;" => "&otilde;",
"&"."#246;" => "&ouml;",
"&"."#247;" => "&divide;",
"&"."#248;" => "&oslash;",
"&"."#249;" => "&ugrave;",
"&"."#250;" => "&uacute;",
"&"."#251;" => "&ucirc;",
"&"."#252;" => "&uuml;",
"&"."#253;" => "&yacute;",
"&"."#254;" => "&thorn;",
"&"."#255;" => "&yuml;",
"&"."#338;" => "&OElig;",
"&"."#339;" => "&oelig;",
"&"."#352;" => "&Scaron;",
"&"."#353;" => "&scaron;",
"&"."#376;" => "&Yuml;",
"&"."#402;" => "&fnof;",
"&"."#710;" => "&circ;",
"&"."#732;" => "&tilde;",
"&"."#913;" => "&Alpha;",
"&"."#914;" => "&Beta;",
"&"."#915;" => "&Gamma;",
"&"."#916;" => "&Delta;",
"&"."#917;" => "&Epsilon;",
"&"."#918;" => "&Zeta;",
"&"."#919;" => "&Eta;",
"&"."#920;" => "&Theta;",
"&"."#921;" => "&Iota;",
"&"."#922;" => "&Kappa;",
"&"."#923;" => "&Lambda;",
"&"."#924;" => "&Mu;",
"&"."#925;" => "&Nu;",
"&"."#926;" => "&Xi;",
"&"."#927;" => "&Omicron;",
"&"."#928;" => "&Pi;",
"&"."#929;" => "&Rho;",
"&"."#931;" => "&Sigma;",
"&"."#932;" => "&Tau;",
"&"."#933;" => "&Upsilon;",
"&"."#934;" => "&Phi;",
"&"."#935;" => "&Chi;",
"&"."#936;" => "&Psi;",
"&"."#937;" => "&Omega;",
"&"."#945;" => "&alpha;",
"&"."#946;" => "&beta;",
"&"."#947;" => "&gamma;",
"&"."#948;" => "&delta;",
"&"."#949;" => "&epsilon;",
"&"."#950;" => "&zeta;",
"&"."#951;" => "&eta;",
"&"."#952;" => "&theta;",
"&"."#953;" => "&iota;",
"&"."#954;" => "&kappa;",
"&"."#955;" => "&lambda;",
"&"."#956;" => "&mu;",
"&"."#957;" => "&nu;",
"&"."#958;" => "&xi;",
"&"."#959;" => "&omicron;",
"&"."#960;" => "&pi;",
"&"."#961;" => "&rho;",
"&"."#962;" => "&sigmaf;",
"&"."#963;" => "&sigma;",
"&"."#964;" => "&tau;",
"&"."#965;" => "&upsilon;",
"&"."#966;" => "&phi;",
"&"."#967;" => "&chi;",
"&"."#968;" => "&psi;",
"&"."#969;" => "&omega;",
"&"."#977;" => "&thetasym;",
"&"."#978;" => "&upsih;",
"&"."#982;" => "&piv;",
"&"."#8194;" => "&ensp;",
"&"."#8195;" => "&emsp;",
"&"."#8201;" => "&thinsp;",
"&"."#8204;" => "&zwnj;",
"&"."#8205;" => "&zwj;",
"&"."#8206;" => "&lrm;",
"&"."#8207;" => "&rlm;",
"&"."#8211;" => "&ndash;",
"&"."#8212;" => "&mdash;",
"&"."#8216;" => "&lsquo;",
"&"."#8217;" => "&rsquo;",
"&"."#8218;" => "&sbquo;",
"&"."#8220;" => "&ldquo;",
"&"."#8221;" => "&rdquo;",
"&"."#8222;" => "&bdquo;",
"&"."#8224;" => "&dagger;",
"&"."#8225;" => "&Dagger;",
"&"."#8226;" => "&bull;",
"&"."#8230;" => "&hellip;",
"&"."#8240;" => "&permil;",
"&"."#8242;" => "&prime;",
"&"."#8243;" => "&Prime;",
"&"."#8249;" => "&lsaquo;",
"&"."#8250;" => "&rsaquo;",
"&"."#8254;" => "&oline;",
"&"."#8260;" => "&frasl;",
"&"."#8364;" => "&euro;",
"&"."#8465;" => "&image;",
"&"."#8472;" => "&weierp;",
"&"."#8476;" => "&real;",
"&"."#8482;" => "&trade;",
"&"."#8501;" => "&alefsym;",
"&"."#8592;" => "&larr;",
"&"."#8593;" => "&uarr;",
"&"."#8594;" => "&rarr;",
"&"."#8595;" => "&darr;",
"&"."#8596;" => "&harr;",
"&"."#8629;" => "&crarr;",
"&"."#8656;" => "&lArr;",
"&"."#8657;" => "&uArr;",
"&"."#8658;" => "&rArr;",
"&"."#8659;" => "&dArr;",
"&"."#8660;" => "&hArr;",
"&"."#8704;" => "&forall;",
"&"."#8706;" => "&part;",
"&"."#8707;" => "&exist;",
"&"."#8709;" => "&empty;",
"&"."#8711;" => "&nabla;",
"&"."#8712;" => "&isin;",
"&"."#8713;" => "&notin;",
"&"."#8715;" => "&ni;",
"&"."#8719;" => "&prod;",
"&"."#8721;" => "&sum;",
"&"."#8722;" => "&minus;",
"&"."#8727;" => "&lowast;",
"&"."#8730;" => "&radic;",
"&"."#8733;" => "&prop;",
"&"."#8734;" => "&infin;",
"&"."#8736;" => "&ang;",
"&"."#8743;" => "&and;",
"&"."#8744;" => "&or;",
"&"."#8745;" => "&cap;",
"&"."#8746;" => "&cup;",
"&"."#8747;" => "&int;",
"&"."#8756;" => "&there4;",
"&"."#8764;" => "&sim;",
"&"."#8773;" => "&cong;",
"&"."#8776;" => "&asymp;",
"&"."#8800;" => "&ne;",
"&"."#8801;" => "&equiv;",
"&"."#8804;" => "&le;",
"&"."#8805;" => "&ge;",
"&"."#8834;" => "&sub;",
"&"."#8835;" => "&sup;",
"&"."#8836;" => "&nsub;",
"&"."#8838;" => "&sube;",
"&"."#8839;" => "&supe;",
"&"."#8853;" => "&oplus;",
"&"."#8855;" => "&otimes;",
"&"."#8869;" => "&perp;",
"&"."#8901;" => "&sdot;",
"&"."#8968;" => "&lceil;",
"&"."#8969;" => "&rceil;",
"&"."#8970;" => "&lfloor;",
"&"."#8971;" => "&rfloor;",
"&"."#9001;" => "&lang;",
"&"."#9002;" => "&rang;",
"&"."#9674;" => "&loz;",
"&"."#9824;" => "&spades;",
"&"."#9827;" => "&clubs;",
"&"."#9829;" => "&hearts;",
"&"."#9830;" => "&diams;"
);
return str_replace(array_keys($ISO10646XHTMLTrans), array_values($ISO10646XHTMLTrans), $content);
}
/**
* @param string $string
*
* @return string
*/
public function ReadyForPDF($string='')
{
return trim(
html_entity_decode(
str_replace(
['“','„','',"&rsquo;","&apos;","NONBLOCKINGZERO"],
['"','','-',"'","'",''],
$string
),
ENT_QUOTES,
'UTF-8'
)
);
}
}