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')) {
87 if (strtoupper(substr($os, 0, 3)) ===
'WIN' || FindBadUtf8($value)) {
88 return (utf8_encode(htmlspecialchars($value)));
90 return (htmlspecialchars($value));
101 function IsHtmlExtension($ext, $formExtensions)
103 if (!$formExtensions || !is_array($formExtensions)) {
106 $lcaseHtmlExtensions = array();
107 foreach ($formExtensions as $key => $val) {
108 $lcaseHtmlExtensions[$key] = strtolower($val);
110 return in_array($ext, $lcaseHtmlExtensions);
121 function DetectHtml($filePath)
123 $fp = @fopen($filePath,
'rb');
126 if ($fp ===
false || !flock($fp, LOCK_SH)) {
130 $chunk = fread($fp, 1024);
134 $chunk = strtolower($chunk);
140 $chunk = trim($chunk);
142 if (preg_match(
"/<!DOCTYPE\W*X?HTML/sim", $chunk)) {
146 $tags = array(
'<body',
'<head',
'<html',
'<img',
'<pre',
'<script',
'<table',
'<title');
148 foreach ($tags as $tag) {
149 if (
false !== strpos($chunk, $tag)) {
155 if (preg_match(
'!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk)) {
162 if (preg_match(
'!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk)) {
167 if (preg_match(
'!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk)) {
183 function IsImageValid($filePath, $extension)
185 if (!@is_readable($filePath)) {
189 $imageCheckExtensions = array(
209 if (!in_array($extension, $imageCheckExtensions)) {
213 if (@getimagesize($filePath) ===
false) {