SORU
19 NİSAN 2010, PAZARTESİ


Onları URL ve dosya adı için dizeleri güvenli dezenfektan?

Deniyorum ama bir işlevi yok iyi bir iş dezenfektan bazı dizeleri böylece onlar kullanmak güvenli URL (gibi bir yazı slug) ve de güvenli olarak dosya adları. Birisi bir dosya yükler örneğin, Adı Tehlikeli karakterleri kaldırmak emin olmak istiyorum.

Şimdiye kadar bu sorunu çözer ve aynı zamanda UTF-8 veri Dışişleri sağlar umarım aşağıdaki fonksiyonu buldum.

/**
 * Convert a string to the file/URL safe "slug" form
 *
 * @param string $string the string to clean
 * @param bool $is_filename TRUE will allow additional filename characters
 * @return string
 */
function sanitize($string = '', $is_filename = FALSE)
{
 // Replace all weird characters with dashes
 $string = preg_replace('/[^\w\-'. ($is_filename ? '~_\.' : ''). '] /u', '-', $string);

 // Only allow one dash separator at a time (and make string lowercase)
 return mb_strtolower(preg_replace('/-- /u', '-', $string), 'UTF-8');
}

Kimse herhangi bir zor örnek var buna karşı çalışma ya da biliyor olabilirim verileri daha iyi bir şekilde kötü isimler bizim apps korumak için mi?

-filename $vim sağlar temp dosyaları gibi bazı ek karakterler

güncelleme: geçerli bir kullanımı aklıma bu yana yıldız karakteri kaldırıldı

CEVAP
19 NİSAN 2010, PAZARTESİ


Chyrp kod bu büyük işlevi bulundu:

/**
 * Function: sanitize
 * Returns a sanitized string, typically for URLs.
 *
 * Parameters:
 *     $string - The string to sanitize.
 *     $force_lowercase - Force the string to lowercase?
 *     $anal - If set to *true*, will remove all non-alphanumeric characters.
 */
function sanitize($string, $force_lowercase = true, $anal = false) {
    $strip = array("~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "=", " ", "[", "{", "]",
                   "}", "\\", "|", ";", ":", "\"", "'", "‘", "’", "“", "”", "–", "—",
                   "—", "–", ",", "<", ".", ">", "/", "?");
    $clean = trim(str_replace($strip, "", strip_tags($string)));
    $clean = preg_replace('/\s /', "-", $clean);
    $clean = ($anal) ? preg_replace("/[^a-zA-Z0-9]/", "", $clean) : $clean ;
    return ($force_lowercase) ?
        (function_exists('mb_strtolower')) ?
            mb_strtolower($clean, 'UTF-8') :
            strtolower($clean) :
        $clean;
}

ve wordpress kod bu

/**
 * Sanitizes a filename replacing whitespace with dashes
 *
 * Removes special characters that are illegal in filenames on certain
 * operating systems and special characters requiring special escaping
 * to manipulate at the command line. Replaces spaces and consecutive
 * dashes with a single dash. Trim period, dash and underscore from beginning
 * and end of filename.
 *
 * @since 2.1.0
 *
 * @param string $filename The filename to be sanitized
 * @return string The sanitized filename
 */
function sanitize_file_name( $filename ) {
    $filename_raw = $filename;
    $special_chars = array("?", "[", "]", "/", "\\", "=", "<", ">", ":", ";", ",", "'", "\"", "&", "$", "#", "*", "(", ")", "|", "~", "`", "!", "{", "}");
    $special_chars = apply_filters('sanitize_file_name_chars', $special_chars, $filename_raw);
    $filename = str_replace($special_chars, '', $filename);
    $filename = preg_replace('/[\s-] /', '-', $filename);
    $filename = trim($filename, '.-_');
    return apply_filters('sanitize_file_name', $filename, $filename_raw);
}

Güncelleme Eylül 2012

Alix Axel Bu alanda inanılmaz işler başardı. Phunction onun çerçeve birkaç büyük metin filtreleri ve dönüşümleri içerir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • J Medema

    J Medema

    11 EKİM 2006
  • martin shervington

    martin sherv

    7 EKİM 2011
  • Megan Parken

    Megan Parken

    19 Temmuz 2009