Autor Zpráva
MartinXYZ
Profil *
Ahoj,

moc prosím o pomoc s mým problémem :-). Mám PHP skript - vytvářím s ním na serveru soubory, které mají takový název, který byl zadán do políčka formuláře. Pro zjednodušení skript zkrátím:

<input type="text" name="nazev_souboru">
<input type="submit" value="Vytvořit soubor">

<?php
if  ($_POST[nazev_souboru] != ""){
    $nahradit_znaky = Array('*'=>'_','?'=>'_','"'=>'','<'=>'_','>'=>'_',':'=>'_');   
    file_put_contents(strtr($_POST[nazev_souboru], $nahradit_znaky).".txt");
    }
?>


Nyní k problému. Pomocí Array v "$nahradit_znaky" si mohu odstranit znaky, které budou dělat v cestě problémy (např. lomítka, otazník, hvězdička, dvojtečka, atd.), to není problém. Ale neexistuje nějaká funkce, která umí automaticky validovat text tak, aby za mě ty znaky odstranila, a abych nemusel vypisovat desítky znaků do Array?

Názvy souborů totiž nezadávám ručně, ale automaticky je získávám z vybraného textu, kde se bohužel vyskytují i jiné speciální znaky (např. odrážky typu "kulička", "puntík", "čtvereček", nebo prodloužená pomlčka, francouzské uvozovky, entity, atd...).

Takže ve zkratce bych spíše potřeboval, aby byly povolené jen třeba znaky a-ž, A-Ž (včetně diakritiky), pomlčky a čísla. Ostatní znaky aby se třeba nahradily "_".

Bude tu někdo, kdo by mi prosím pomohl? :-)

Děkuji moc,
Martin
MartinXYZ
Profil *
Tak už jsem na to přišel.. kdyby se to někomu hodilo, dávám to sem:

<?php
if  ($_POST[nazev_souboru] != ""){
    file_put_contents(preg_replace('/[^\p{L}0-9\-=%;!\'_ .,()[\]]/u', '', $_POST[nazev_souboru]).".txt");
    }
?>

Ve skriptu jsou povolené znaky a-Ž vč. diakritiky, číslice, plus tyto znaky:
- = % ; ! ' _ mezera . , ( ) [ ]


M.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: