Ne kadar çabuk dize dizideki etiketleri almak için?

4 Cevap php

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?

4 Cevap

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' );
}