Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: basename

Sivun loppuun

peg [19.02.2006 12:51:04]

#

En ymmärrä mitä järkeä kirjoittaa basenamea jos tuo polku ja tiedostonimi täytyy kirjoittaa, eikä se itse hae sitä. Alla oleva malli https://www.php.net/basename

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path);        // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"

KeKimmo [19.02.2006 13:09:28]

#

Basename on tietääkseni yleiskäyttöinen komento, eikä mikään suora "anna nykyisen tiedoston nimi"-juttu. Jos haluat nykyisen tiedoston basenamen, anna sille parametriksi nykyisen tiedoston koko nimi.

Draiz [19.02.2006 13:16:40]

#

Itse tarvitsen tuota kuvagalleriassani, koska halusin gallerian näyttämään tiedoston nimen, ei sen koko polkua.

<?php
$img = "/usr/home/draiz/foo/bar/example.jpg";
echo basename($img);
// tulostaa "example.jpg"
?>

peg [19.02.2006 15:31:48]

#

Draizille, jos haluat päätteen pois niin.

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>

tsuriga [19.02.2006 16:04:02]

#

No mikähän tarkoitus tuolla viestillä oli? Ei se pääte tuolla pois lähde ellei jo valmiiksi tiedä sitä päätettä. substr ja strrposia, vaikka silläkin menee pieleen jos päätteessä on kaksi pistettä, .tar.gz tms~

ajv [19.02.2006 16:14:41]

#

peg kirjoitti:

En ymmärrä mitä järkeä kirjoittaa basenamea jos tuo polku
ja tiedostonimi täytyy kirjoittaa, eikä se itse hae sitä.

Vaikka esimerkiksi jos tiedostojen nimet haetaan ohjelmallisesti ja halutaan tulostaa vain se tiedostonimi, eikä koko polkua.

<?php
foreach(glog("hakemisto/*.*") as $fname){
   echo basename($fname);
}

Draiz [19.02.2006 16:35:19]

#

ajv kirjoitti:

peg kirjoitti:

En ymmärrä mitä järkeä kirjoittaa basenamea jos tuo polku
ja tiedostonimi täytyy kirjoittaa, eikä se itse hae sitä.

Vaikka esimerkiksi jos tiedostojen nimet haetaan ohjelmallisesti ja halutaan tulostaa vain se tiedostonimi, eikä koko polkua.

<?php
foreach(glog("hakemisto/*.*") as $fname){
   echo basename($fname);
}

Tuota juuri tarkoitin.

peg kirjoitti:

Draizille, jos haluat päätteen pois niin.

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>

Ei ole mitään tarvetta sille, ja eikö minun pitänyt neuvoa sinua eikä sinun minua? :)

T.M. [19.02.2006 16:55:28]

#

tsuriga kirjoitti:

Ei se pääte tuolla pois lähde ellei jo valmiiksi tiedä sitä päätettä. substr ja strrposia, vaikka silläkin menee pieleen jos päätteessä on kaksi pistettä, .tar.gz tms~

Entäs strpos() funktiolla?

Koodi:

<?php

$tiedosto = "hak/dir/seppo.tar.gz.bak";
$base = basename($tiedosto);
$nimi = substr($base, 0, strpos($base, ".")); // seppo

?>

Metabolix [19.02.2006 17:05:44]

#

Ei voi tietää. Entäpä kernel-2.6.12.tar.bz2.bak, kun pitäisi osata pätkäistä keskimmäiseltä pisteeltä?

peg [19.02.2006 17:45:23]

#

Kiitos AJV esimerkkisi valaisi asian. PHP:n oma esimerkki
on vähän köyhä.

<?php
$path = "/home/httpd/html/index.php";
$file = basename($path); // $file is set to "index.php"
$file = basename($path, ".php"); // $file is set to "index"
?>

T.M. [19.02.2006 18:34:51]

#

Metabolix kirjoitti:

Ei voi tietää. Entäpä kernel-2.6.12.tar.bz2.bak, kun pitäisi osata pätkäistä keskimmäiseltä pisteeltä?

Niijoo, sit varmaan pitäs laittaa rajoitus kolmeen pisteeseen, tai sitten kirjoittaa kaikki maholliset tiedostotyypit taulukkoon, ja hoitaa homman sitä kautta, mutta tuo ei ole järkevää.

Mietin että onko se niin vakavaa jos näkyy esim "seppo.tar" (.gz poistettu) eikä "seppo"

tsuriga [19.02.2006 22:12:55]

#

Saman tuo php:n manuaalin esimerkki kertoo ku ajv:ki, eri kielellä vaan. Noita monen pisteen tiedostotyyppejä ei taida ihan älytöntä määrää olla, joten ne voisi taulukoida.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta