[PHP] Nie potrafię nazwać problemu (funkcja echo, ucięcie)


(Uww) #1

Przepraszam za nazwę wątku, ale nie potrafię nazwać konkretnie tematu w kilku wyrazach.

A więc:

w pliku index.php mam sobie zmienną $tekst

zmiennej tej przypisany jest wyraz: baran.txt

czyli: $tekst='baran.txt'

i teraz chcę wypisać zawartość tej zmiennej

czyli: echo "$tekst";

i efekt mam taki, że funkcja echo wyświetla mi wyrażenie: baran.txt

a ja chciałabym, aby wyświetliło mi sam wyraz baran, bez końcówki .txt

czy jest taka możliwość?

dziękuję za pomoc


(Dolorismachina) #2

Chyba najłatwiej byłoby usunąć .txt z wartości zmiennej.


(Uww) #3

Tak, tylko że ten wyraz: baran.txt to nazwa pliku i to skrypt ma to usunąć.


(floyd) #4

Dodaj linię:

$tekst=substr($tekst, 0, 5);


(Uww) #5

a co wtedy, gdy nazwa będzie miała 20 znaków? to musi być uniwersalne. skrypt zawsz musi ucinać końcówkę .txt


(Methylz) #6

Pobaw się z ereg.

http://pl.php.net/ereg


(floyd) #7

$tekst=substr($tekst, 0, strpos($tekst, '.txt'));


(Pawel Kowalewski) #8
<?php

$tekst='baran.txt';

$tekst = str_replace('.txt', '', $tekst);

echo $tekst;

?>

najprościej :wink:


(Kutar 0) #9

A co jeśli plik nazywa się na przykład baran.txtbaran.txt ? Obydwa kody usuną wraz z rozszerzeniem część nazwy.

Można to rozwiązać tak:

$nazwa=substr($plik,0,strrpos($plik,'.'));

(floyd) #10

Tak się można bawić jeszcze dłużej, bo jeżeli np. w katalogu znajdzie się plik o nazwie. baran.com w którym końcówka ma nie być usuwana? Wobec tego znów poprawka: :))


(Marcin E Pc) #11

A może tak:

echo substr($tekst, 0, -4);

Tylko wtedy muszą wszystki pliki mieć końcówkę .txt, bo np: .com też utnie.


(Kutar 0) #12

(Marcin E Pc) #13

Dokłądnie ten kawałek jest interesujący, wtedy mój pomysł będzie działał.


(Kutar 0) #14

A no nie doczytałem.


(Krzkaczor) #15

A nie lepiej

splitnac ciag .

$text = split('.',$text);

(Marcin E Pc) #16

takie splitnięcie prowadzi do kolejnych problemów, bo jak np mamy:

to.jest.dziwny.format.txt to takie splitnięcie da znów przekombinowany efekt, bo będzie trzeba zliczać elementy tablicy, wykorzystywać pętle, więc po co? Jak jeszcze jest wyrażnie napisane że to będą plik .txt, więc wystarczy odpowiednio wyświetlić i po kłopocie.


(Uww) #17

Rozwiązane,

sama znalazłam już wcześniej, dzięki za pomoc

chodzi tylko i wyłącznie o pliki .txt


(Kutar 0) #18

Chyba nie wiesz jak działa funkcja split(). Kropka ostanie potraktowana jako wyrażenie regularne. Z resztą, nawet jakbyś wykorzystał explode(), to i tak nie zadziała dobrze, jeśli w nazwie jest więcej niż jedna kropka. A po za tym to zwraca tablicę.


(Marcin E Pc) #19

Mniej więcej wiem jak działa f-cja split, tylko właśnie mnie zastanawia jak podzieli ona przy użyciu właśnie tego podwyrażenia, '.' o ile coś tam pamiętam to kropka zastępuje każdy znak. I pisałem że zwraca tablicę. I pisałem że nie zadziała dobrze. Sprawdzę jak dopadnę swój komputer.

Pozdro


(Kutar 0) #20

ptasior , przepraszam, widocznie źle się zrozumieliśmy, to nie do Ciebie tylko do SyntaxError. Po prostu jak otworzyłem tę stronę, to na chwilę odszedłem od komputera zanim zapisałem post i dlatego zanim został zapisany to już dwie osoby odpisały (w tym Ty).