32 function RemoveFromStart($sourceString, $charToRemove)
34 $sPattern =
'|^'.$charToRemove.
'+|';
35 return preg_replace($sPattern,
'', $sourceString);
45 function RemoveFromEnd($sourceString, $charToRemove)
47 $sPattern =
'|'.$charToRemove.
'+$|';
48 return preg_replace($sPattern,
'', $sourceString);
57 function FindBadUtf8($string)
59 $regex =
'([\x00-\x7F]|[\xC2-\xDF][\x80-\xBF]|\xE0[\xA0-\xBF][\x80-\xBF]|[\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}|\xED[\x80-\x9F][\x80-\xBF]';
60 $regex .=
'|\xF0[\x90-\xBF][\x80-\xBF]{2}|[\xF1-\xF3][\x80-\xBF]{3}|\xF4[\x80-\x8F][\x80-\xBF]{2}|(.{1}))';
63 while (preg_match(
'/'.$regex.
'/S', $string, $matches)) {
64 if (isset($matches[2])) {
67 $string = substr($string, strlen($matches[0]));
79 function ConvertToXmlAttribute($value)
81 if (defined(
'PHP_OS'))
88 if (strtoupper(substr($os, 0, 3)) ===
'WIN' || FindBadUtf8($value))
90 return (utf8_encode(htmlspecialchars($value)));
92 return (htmlspecialchars($value));
103 function IsHtmlExtension($ext, $formExtensions)
105 if (!$formExtensions || !is_array($formExtensions))
109 $lcaseHtmlExtensions = array();
110 foreach ($formExtensions as $key => $val)
112 $lcaseHtmlExtensions[$key] = strtolower($val);
114 return in_array($ext, $lcaseHtmlExtensions);
125 function DetectHtml($filePath)
127 $fp = @fopen($filePath,
'rb');
130 if ($fp ===
false || !flock($fp, LOCK_SH))
135 $chunk = fread($fp, 1024);
139 $chunk = strtolower($chunk);
146 $chunk = trim($chunk);
148 if (preg_match(
"/<!DOCTYPE\W*X?HTML/sim", $chunk))
153 $tags = array(
'<body',
'<head',
'<html',
'<img',
'<pre',
'<script',
'<table',
'<title');
155 foreach ($tags as $tag)
157 if (
false !== strpos($chunk, $tag))
164 if (preg_match(
'!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk))
172 if (preg_match(
'!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk))
178 if (preg_match(
'!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk))
195 function IsImageValid($filePath, $extension)
197 if (!@is_readable($filePath)) {
201 $imageCheckExtensions = array(
221 if (!in_array($extension, $imageCheckExtensions)) {
225 if (@getimagesize($filePath) ===
false) {