Strings bereinigen, um sie URL und Dateinamen sicher zu machen?

Ich versuche zu kommen mit einer Funktion, die einen guten job zu bereinigen bestimmte Zeichenfolgen, so dass Sie sicher in der URL (wie ein post slug) und auch sicher zu verwenden, als Datei-Namen. Zum Beispiel, wenn jemand eine Datei hochlädt, die ich will, um sicherzustellen, dass ich entfernen Sie alle gefährlichen Zeichen aus dem Namen.

Bisher habe ich folgende Funktion, die ich hoffe, dass löst dieses problem und ermöglicht es ausländischen UTF-8-Daten auch.

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

Hat jemand eine knifflige sample-Daten die ich ausführen kann gegen diese - oder wissen Sie einen besseren Weg, um zu gewährleisten, unsere apps von schlechten Namen?

$ist-mit dem Namen können einige zusätzliche Zeichen wie temp-vim Dateien

update: entfernt die Sterne-Charakter, da konnte ich nicht daran denken, eine gültige verwenden

InformationsquelleAutor der Frage Xeoncross | 2010-04-19

Schreibe einen Kommentar