I have $_GET['tags'] = "apples, oranges, bananas, grapes, cherries"
Ben bir diziye veri yerleştirmek gerekir ($tags).
Bir quick way to trim each item and perform security functions (sıyırma html, özel karakter) nedir?
Ile array_walk() Eğer ayrı ayrı tag temizleme fonksiyonu yazmak, ve sonra kolayca gelen verilere geçerli olabilir.
function sterilize(&$val,$key)
{
//do whatever security you need here
$val = trim($val);
$val = strip_tags($val);
//etc
return htmlspecialchars($val);
}
$bad_values = explode(',',$_GET['tags']);
array_walk($bad_values,'sterilize');
Aşağıdaki deneyin:
function process_tags($tags) {
$tags = strip_tags($tags);
$tags = explode(',', $tags);
foreach($tags as $key => $value) {
$tags[$key] = htmlentities($tags[$key]);
$tags[$key] = trim($tags[$key]);
}
return $tags;
}
Sadece şu şekilde işlevini çağırabilirsiniz:
$myTags = "apples, berries, oranges";
$tags = process_tags($myTags);
array_map trim()
uygulamak ve htmlentities
dizideki tüm öğeler, tek satırda bunu yapabilirsiniz:
$tags = array_map('htmlentities', array_map('trim', explode(',', strip_tags($_GET["tags"]))));
Bunu nasıl dikkatli olun. HTML öncelemeli size hemen sayfaya yazdırmak niyetinde değilim verileri ile yapmak istediğiniz bir output görev, ve bir şey değildir.
Ben sayfaları bu tür bir şey ile oldukça açık olmasını düşünmek, ve gerçekten filtering escaping içerik içeriğin ayrı.
// First, get the tags as an array, filtered to be valid data
$tags = array_map( 'filterTag', explode( ',', $_GET['tags'] ) );
// Do whatever other processing with $tags
// NOW, create a version of the tags that you'll use for display only
// or do this step ONLY just prior to display
$tagsSafeForHtml = array_map( 'escapeForHtml', $tags );
function filterTag( $tag )
{
// Use whatever combination of filtering functions you want
return trim( strip_tags( $value ) );
}
function escapeForHtml( $value )
{
// Use whatever escaping strategy that makes most sense for your content
return htmlspecialchars( $value, ENT_COMPAT, 'UTF-8' );
}