[php] název souboru

Webdesign, HTML, CSS, Flash, PHP, ASP, .NET, JavaScript. Kritika www stránek na Smetišti.

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Thomas123 28. 3. 2008 17:47

Čau lidi, opět se ozývám.

Kód: Vybrat vše
<? $nazev = funkce(""); ?>


Nevím, co mám doplnit místo toho funkce. Potřebuji udělat, aby se mi do proměné $nazev dostal název souboru bez přípony. Trochu nesrozumitelné, ale ještě dám příklad.

Ve souboru test.php bude určitý obsah. Potřebuji aby se do proměné $nazev dostalo slovo test. Toto bych si pak vložil tam, kam potřebuji. Víte někdo jak na to?
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod b.4.4.L 28. 3. 2008 18:04

Mrtvý nemluví.
b.4.4.L
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod Thomas123 28. 3. 2008 18:23

Pokud jsem to pochopil správně, tak by to mělo být nějak takhle?

Kód: Vybrat vše
<?php
$nazev = pathinfo('test.php');

echo $path_parts['filename'], "\n"; ?>


Ovšem toto mi moc nepomůže. Pomohlo by mi to, kdybych tam nemusel zadávat to test.php, aby to zkrátka vzalo ten soubor, ze kterého se to "spouští". Jde to nějak upravit?
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod aacid 28. 3. 2008 19:03

skus jednu z tychto premennych:
Kód: Vybrat vše
$_SERVER['SCRIPT_FILENAME']
$_SERVER['SCRIPT_NAME']
$_SERVER['PHP_SELF']
aacid
Junior
Uživatelský avatar

Odeslat příspěvekod b.4.4.L 28. 3. 2008 19:06

Jak psal acid, ale jelikož jsem se s tím psal tak už to sem vložím :evil:
Kód: Vybrat vše
$soubor=$_SERVER['SCRIPT_NAME'];
$JmenoSouboru=pathinfo($soubor, PATHINFO_FILENAME);
echo $JmenoSouboru;
Mrtvý nemluví.
b.4.4.L
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod Thomas123 28. 3. 2008 20:47

to b.4.4.L: Zkoušel jsem ten kód a vyhazuje mi to chybu.

Notice: Use of undefined constant PATHINFO_FILENAME - assumed 'PATHINFO_FILENAME' in c:\php\test.php on line 1

Warning: pathinfo() expects parameter 2 to be long, string given in c:\php\test.php on line 1


Pochopil jsem z toho, že asi neexistuje PATHINFO_FILENAME, tak jak je zapsáno a že parametr 2 u pathinfo () je dlouhý. Někde je myslím nějaká kosmetická vada. Je chyba u mne nebo v kódu?
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod b.4.4.L 28. 3. 2008 21:01

Mě to doma i na freehostingu funguje. A v dokumentaci píšou, že je to použitelný od verze PHP 5.2.0. Tak je možný že máš doma starší.
Tak to udělej jak jsi psal prvně.
Kód: Vybrat vše
$nazev = pathinfo($_SERVER['SCRIPT_NAME']);
echo $nazev['filename']."\n";
Mrtvý nemluví.
b.4.4.L
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod Morfeus211 28. 3. 2008 21:19

bože, neviem čo riešite:

Kód: Vybrat vše
substr(substr($_SERVER['PHP_SELF'], 0, strrpos($_SERVER['PHP_SELF'], '.php')), strrpos($_SERVER['PHP_SELF'], '/') + 1);


(Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8d mod_autoindex_color PHP/5.2.1)
Gigabyte G33-DS3R, Intel Core 2 Duo E6550, Sapphire HD2600Pro 512MB, 2x1GB DDR2 Kingston 667, 80 GB Maxtor, 500GB Seagate, 250GB WD, 640GB WD, LG GH20NS10 SATA black, X-FI Xtreme Gamer
Morfeus211
Junior
Uživatelský avatar

Odeslat příspěvekod aacid 28. 3. 2008 21:23

divne, ani mne to nejde, dokonca ani $nazev['filename'] nesiel, ale $nazev['basename'] ide, a asi to aj bude vyhovovat viac, pretoze filename da iba nazov bez pripony...

Morf: aj tak sa da, ale je to dost krkolomne, takto to je o dost elegantnejsie :)
aacid
Junior
Uživatelský avatar

Odeslat příspěvekod Morfeus211 28. 3. 2008 21:34

aacid: vnorený substr vysekne koncovku .php, vonkajší odsekne cestu. Trochu je ale radšej by som toto použil
Gigabyte G33-DS3R, Intel Core 2 Duo E6550, Sapphire HD2600Pro 512MB, 2x1GB DDR2 Kingston 667, 80 GB Maxtor, 500GB Seagate, 250GB WD, 640GB WD, LG GH20NS10 SATA black, X-FI Xtreme Gamer
Morfeus211
Junior
Uživatelský avatar

Odeslat příspěvekod Thomas123 28. 3. 2008 21:46

Už vím, kde mám asi problém. Používám EasyPHP 1.8 - PHP 4.3.

Teď jsem to total zdrbal, tak se na to mrknu asi až zítra.
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod b.4.4.L 28. 3. 2008 22:10

Morfeus211: Vím že to není tenhle případ ale co když se nebude jedna o php soubor. Radši vždy použiji obecnější možnost.
Ale jde to taky no. :)

aacid: Však on chtěl jméno souboru bez koncovky.
Mrtvý nemluví.
b.4.4.L
Kolemjdoucí
Uživatelský avatar

Odeslat příspěvekod Thomas123 28. 3. 2008 22:21

Mno, už jsem to dal nějak dohromady, uvidím, jak dlouho mi EasyPHP pojede.

Ano, b.4.4.L má pravdu, já chtěl název souboru bez koncovky. Zkoušel jsem to od Morfeuse221 a celkem dobrý, ale asi to bude složitější. Já v index.php includuji např. test.php. V test.php chci zjistit ten název, ale logicky se mi zobrazí název index. Jde nějak docílit, že se mi po includnutí test.php zobrazí název test nebo budu mít vždy hodnotu index?
// I vy můžete mít legální software, stačí používat Linux Ubuntu //
Thomas123
Junior
Uživatelský avatar

Odeslat příspěvekod Morfeus211 28. 3. 2008 23:06

čo sa týka includovania tak ma jedine napadá, že v index.php definovat pole $php_subory a premennú $php_subory_pocet. v každom includovanom súbore spustiť toto:
Kód: Vybrat vše
$php_subory_pocet++;
$php_subory[$php_subory_pocet] = 'includovany php subor.php';
Pokiaľ by si includoval nejako dynamicky napr z $_GET tak by to bola bezpečnostná diera (bolo by možno includovať hocičo).

iná možnosť je nahádzať názvy súborov a cesty do databázy a len SELECTom načítavať a nič nezapisovať

btw. možno je na to nejaká severovská premenná alebo niečo také.
Gigabyte G33-DS3R, Intel Core 2 Duo E6550, Sapphire HD2600Pro 512MB, 2x1GB DDR2 Kingston 667, 80 GB Maxtor, 500GB Seagate, 250GB WD, 640GB WD, LG GH20NS10 SATA black, X-FI Xtreme Gamer
Morfeus211
Junior
Uživatelský avatar

Odeslat příspěvekod Darkweaver 24. 1. 2009 12:41

<?php
$cesta = "/www/zkouska/zobrazit/test.php"; // nebo použij __FILE__
$nazev = basename($cesta, ".php");

echo $nazev;
?>
Darkweaver
Kolemjdoucí


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků