Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F947846
modifier.escape.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
modifier.escape.php
View Options
<?php
/**
* Smarty plugin
*
* @package Smarty
* @subpackage PluginsModifier
*/
/**
* Smarty escape modifier plugin
*
* Type: modifier<br>
* Name: escape<br>
* Purpose: escape string for output
*
* @link http://smarty.php.net/manual/en/language.modifier.count.characters.php count_characters (Smarty online manual)
* @author Monte Ohrt <monte at ohrt dot com>
* @param string $string input string
* @param string $esc_type escape type
* @param string $char_set character set
* @return string escaped input string
*/
function
smarty_modifier_escape
(
$string
,
$esc_type
=
'html'
,
$char_set
=
SMARTY_RESOURCE_CHAR_SET
)
{
switch
(
$esc_type
)
{
case
'html'
:
return
htmlspecialchars
(
$string
,
ENT_QUOTES
,
$char_set
);
case
'htmlall'
:
return
htmlentities
(
$string
,
ENT_QUOTES
,
$char_set
);
case
'url'
:
return
rawurlencode
(
$string
);
case
'urlpathinfo'
:
return
str_replace
(
'%2F'
,
'/'
,
rawurlencode
(
$string
));
case
'quotes'
:
// escape unescaped single quotes
return
preg_replace
(
"%(?<!
\\\\
)'%"
,
"
\\
'"
,
$string
);
case
'hex'
:
// escape every character into hex
$return
=
''
;
for
(
$x
=
0
;
$x
<
strlen
(
$string
);
$x
++)
{
$return
.=
'%'
.
bin2hex
(
$string
[
$x
]);
}
return
$return
;
case
'hexentity'
:
$return
=
''
;
for
(
$x
=
0
;
$x
<
strlen
(
$string
);
$x
++)
{
$return
.=
'&#x'
.
bin2hex
(
$string
[
$x
])
.
';'
;
}
return
$return
;
case
'decentity'
:
$return
=
''
;
for
(
$x
=
0
;
$x
<
strlen
(
$string
);
$x
++)
{
$return
.=
'&#'
.
ord
(
$string
[
$x
])
.
';'
;
}
return
$return
;
case
'javascript'
:
// escape quotes and backslashes, newlines, etc.
return
strtr
(
$string
,
array
(
'
\\
'
=>
'
\\\\
'
,
"'"
=>
"
\\
'"
,
'"'
=>
'
\\
"'
,
"
\r
"
=>
'
\\
r'
,
"
\n
"
=>
'
\\
n'
,
'</'
=>
'<
\/
'
));
case
'mail'
:
// safe way to display e-mail address on a web page
if
(
$smarty
->
has_mb
)
{
return
mb_str_replace
(
array
(
'@'
,
'.'
),
array
(
' [AT] '
,
' [DOT] '
),
$string
);
}
else
{
return
str_replace
(
array
(
'@'
,
'.'
),
array
(
' [AT] '
,
' [DOT] '
),
$string
);
}
case
'nonstd'
:
// escape non-standard chars, such as ms document quotes
$_res
=
''
;
for
(
$_i
=
0
,
$_len
=
strlen
(
$string
);
$_i
<
$_len
;
$_i
++)
{
$_ord
=
ord
(
substr
(
$string
,
$_i
,
1
));
// non-standard char, escape it
if
(
$_ord
>=
126
)
{
$_res
.=
'&#'
.
$_ord
.
';'
;
}
else
{
$_res
.=
substr
(
$string
,
$_i
,
1
);
}
}
return
$_res
;
default
:
return
$string
;
}
if
(!
function_exists
(
"mb_str_replace"
))
{
// simulate the missing PHP mb_str_replace function
function
mb_str_replace
(
$needle
,
$replacement
,
$haystack
)
{
$needle_len
=
mb_strlen
(
$needle
);
$replacement_len
=
mb_strlen
(
$replacement
);
$pos
=
mb_strpos
(
$haystack
,
$needle
,
0
);
while
(
$pos
!==
false
)
{
$haystack
=
mb_substr
(
$haystack
,
0
,
$pos
)
.
$replacement
.
mb_substr
(
$haystack
,
$pos
+
$needle_len
);
$pos
=
mb_strpos
(
$haystack
,
$needle
,
$pos
+
$replacement_len
);
}
return
$haystack
;
}
}
}
?>
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Apr 26, 13:38 (21 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
25448
Default Alt Text
modifier.escape.php (3 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment