Autor Zpráva
Mufna
Profil
Zdravím Vás. Při uploadu souboru rozděluji textový řetězec (název souboru včetně přípony) na název a příponu pomocí tohoto:

$file = explode(".", $_FILES["soubor"]["name"]);
$nazev = $file[0]
$pripona = $file[1]


Problém ale samozřejmě nastane ve chvíli, kdy součástí samotného názvu souboru (bez přípony) je i tečka. Jak to mám ošetřit, aby se funkce explode() použila pouze na poslední tečku v řetězci ? Hlavně bych byl rád, kdyby to šlo řešit nějak jednoduše. Předem díky za každou radu.
Marek88
Profil
Napadá mě třeba:
$file = explode(".", $_FILES["soubor"]["name"]);
$pripona = $file[count($file)-1];
// nebo lépe asi: $pripona = end($file);
unset($file[count($file)-1]);
$nazev = implode(".", $file);
Taps
Profil
Mufna:
já jsem problém vyřešil takto
<?
function upload_web($s){
$data=explode('.',$name);
$koncovka=array_pop($data);
if(strpos($name,$koncovka)!==false){
return substr($name,0,strpos($name,$koncovka)-1).'.'.$koncovka;
}
?>
Ernie
Profil
<?php
$pripona = strrchr($_FILES["soubor"]["name"], ".");
$nazev = substr($_FILES["soubor"]["name"], 0, -strlen($pripona));
?>
Jozin
Profil
Zdravím,

<?php
list( $nazev, $pripona ) = explode( "\036", preg_replace('~(.+)([\.][a-zA-Z]+$)~', "$1\036\$2", $file) );


Možná ti to příjde složité, ale je to jednoduchý regulár.... Možná by někoho napadlo jednodušší řešení, ale já rád nechávám práci něčemu jinému... jestli jde ještě optimalizovat ten regulár, tak ať mě někdo opraví ;)
meris
Profil
$tecka = strrpos(".",  $_FILES["soubor"]["name"]);
if ($tecka !== false ) {
// ve jmene souboru se tecka nachazi 
  $nazev = substr(  $_FILES["soubor"]["name"], 0, $tecka ) ;
  $pripona = substr(  $_FILES["soubor"]["name"],  $tecka +1) ;
} else {
// ve jmene se nenachazi 
  $nazev = $_FILES["soubor"]["name"];
  $pripona = "neznama";
}
Mufna
Profil
Díky všem za reakce. Nejpoužitelnější pro mě je způsob, který poradil Ernie. Takže to takto mám a funguje to podle mých představ. Ještě jednou díky.

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0