Autor | Zpráva | ||
---|---|---|---|
Tonny Profil * |
#1 · Zasláno: 1. 3. 2012, 13:42:40
Ahoj,
potřeboval bych od souboru, který nahrává uživatel nějakým způsobem odseparovat příponu (potřebuji ji ukládat do databáze) a nevím jak na to a bohužel mě ani nenapadlo pod jakými "keywords" to hledat. Napadlo mě, že by to mohlo jít pomocí explode, kde by odělovačem byla ".", ale pokud by uživatel nahrál subor "muj.soubor.20.11.docx" tak potom nevím jak na to :/ a potřebuji, aby to fungovalao univerzálně pro jakýkoli název. Děkuji váš čas :) Tonny |
||
Alphard Profil |
#2 · Zasláno: 1. 3. 2012, 13:53:54
|
||
Ugo Profil |
#3 · Zasláno: 1. 3. 2012, 14:03:04
co hledáš je strrpos(), najde poslední výskyt znaku
$last = strrpos($filename,'.')+1; $pripona = ($last > 1) ? substr($filename,$last) : ''; |
||
Tonny Profil * |
#4 · Zasláno: 1. 3. 2012, 15:24:21 · Upravil/a: Tonny
Dík za radu, funguje to skvěle :)
Vypadá to asi nějak takhle. Dík, podařilo se mi to zprovoznit tím prvním způsobem, ale tohle taky určitě zkusím :) |
||
DarkMeni Profil |
#5 · Zasláno: 1. 3. 2012, 15:32:36
Taky sem někde viděl funkci strrchr, měla podobný efekt.
|
||
Tonny Profil * |
#6 · Zasláno: 2. 3. 2012, 14:38:36
Ahoj, narazil jsem na další problém :D
myslím, že řešení nebude nijak náročné, určitě na to existuje funkce, kterou, ale bohužel neznám a opět nevím jak najít... Nyní potřebuji získat zbytek jména souboru tj. pokud se soubor jmenuje soubor.docx potřebuj získat jednak docx do proměnné $pripona (což už umím) a dále do proměnné $jemno_bez_pripony potebuji načíst soubor. Bohužel opět potřebuji vymyslet řešení, jak na to když bude název obsahovat více teček |
||
Tori Profil |
Tonny:
„do proměnné $jemno_bez_pripony potebuji načíst soubor“ Název souboru, nebo obsah? Pokud obsah, tak viz file_get_contents. Jinak koukněte ještě jednou na funkci strrpos ve [#3] - stejným způsobem jako příponu zjistíte i jméno souboru před příponou. Případně by šlo použít i str_split, ale budete asi muset vyhodit přebývající tečky na okraji jména/přípony. edit: opraven překlep v názvu funkce. |
||
Tonny Profil * |
#8 · Zasláno: 2. 3. 2012, 14:57:07 · Upravil/a: Tonny
Tori:O funkci jsem si přečetl na interval.cz a pokud jsem to dobře pochopil tak by kod ($last = strrpos($filename,'.')+1;.... ) fungovat neměl, protože funkce najde první tečku a za ní vybere zbytek. takže pokud bych měl soubor "nazev.souboru.s.h.r.o.m.a.d.o.u.tecek.docx" tak jako $last vrátí "souboru". Je dost možné, že jsem kod pochopil špatně, přeci jen toto je oblast PHPka, o kterou jsem se dosud nezajímal, takže jsem začátečník což je i důvod, proč mě nenapadá jak tuto funkci použít k získání zbytku názvu souboru (bez přípony). Děkuji za trpělivost :)
Sorrry :D četl jsem špatnou funkci .... :D kouknu na to snad to pochopím, kdyby se ti ale chtelo napsat mi nějaký konkrétní příklad (kod) byl bych ti vděčný :) |
||
Tori Profil |
Tonny:
Jsem se překlepla, myslela jsem strrpos, pardon. „funkce najde první tečku a za ní vybere zbytek“ Strrpos najde poslední tečku. Část napravo nebo nalevo od tečky se získá fcí substr, koukněte na použití. |
||
Ugo Profil |
#10 · Zasláno: 2. 3. 2012, 15:18:33
function rozdelNazevSouboru($nazev) { $pripona=""; if(($tecka = strrpos($nazev,'.')) !== false) { $pripona = substr($nazev,$tecka+1); $nazev= substr($nazev,0,$tecka); } return array('pripona'=>$pripona,'nazev'=>$nazev); } $info = rozdelNazevSouboru("test.php"); echo "Pripona: ".$info['pripona']."<br>Nazev: ".$info['nazev']; |
||
Tonny Profil * |
#11 · Zasláno: 2. 3. 2012, 15:36:08
Dík, supr funguje to :)
|
||
Kcko Profil |
#12 · Zasláno: 2. 3. 2012, 15:48:51
Ugo:
totéž a mnohem více dělá pathinfo , ale tak co s volným časem, že? ;-)
|
||
Ugo Profil |
#13 · Zasláno: 2. 3. 2012, 16:15:12
Kcko:
je to možné, já neznám všechny funkce a i z minulosti mám zkušenosti že některé je kvůli kompatibilitě lepší si dělat sám, například kdysi jsem nemohl používat explode/implode protože prostě nefachali na serverech kde jsem dělal, takže jsem si je taky musel dělat sám, nicméně pathinfo bylo zmíněno hned na začátku. Ale děkuju za kopnutí (btw. ano nudím se v práci :) ) |
||
Kcko Profil |
#14 · Zasláno: 2. 3. 2012, 17:45:17
Ugo:
Kde Ti nefungovalo explode? To by mě zajímalo ;)) |
||
Ugo Profil |
#15 · Zasláno: 2. 3. 2012, 19:01:26
byl to wz asi před 7 lety, vím že kvůli wz jsem se naučil i používat mysql_result protože to byla jediná funkce co tam fungovala a donedávna jsem ho ještě používal pro svou ohromnou rychlost :) podpora sice říkala že fungovat má, ale ani jejich ani tuna příkladů z netu prostě nešla přitom na lokále to bylo v pohodě tak sme usoudil že je to na pytel, podobný to jistě bylo i s explode, jinak nevím proč bych si psal vlastní ... nebo to možná byla už předtucha že tam funguje if/while/echo a stim si člověk musí nějak vystačit :D
|
||
Časová prodleva: 12 let
|
0