[PHP] String ontleden -> laatste woord

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Stel ik heb een string:
PHP:
1
$path = "../../root/www/dir1";

Nu wil ik graag met een functie het woord ná de laatste slash (/) als een aparte string. Waar moet ik op zoeken op php.net? Wat ik dus wil is een variabele met als inhoud: 'dir1'.

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 18-09 17:06

gorgi_19

Kruimeltjes zijn weer op :9

http://nl3.php.net/split

En dan de laatste waarde in de array.

[ Voor 47% gewijzigd door gorgi_19 op 21-10-2003 10:48 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Altaphista
  • Registratie: Juli 2001
  • Laatst online: 23:10

Altaphista

1. check manual, 2. ask

Je gaat het pas zien als je het doorhebt.


Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Laatst online: 18-09 17:47

Knutselsmurf

LED's make things better

basename is ook nog een optie. (Voor dit speficieke geval dan)

- This line is intentionally left blank -


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 23:26

Tjark

DON'T PANIC

of zullen we 't fancy doen met een preg_match?

'there is more than one way to do it'

*insert signature here


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Knutselsmurf schreef op 21 oktober 2003 @ 10:49:
basename is ook nog een optie. (Voor dit speficieke geval dan)
Heb het nu opgelost, met basename.
PHP:
1
2
3
$fpath = "$content[2]";
$fext  = array_pop(explode('.', $fpath));
$fname = basename($fpath, '/'.$fext);

Voor de geinteresseerden.

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Mischien een beetje vreemde manier maar zo kan het ook:

PHP:
1
2
preg_match_all("/([^\/]+)\/?/", $path, $matches);
$file_or_dir = end($matches[1]);

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
wat een overkill allemaal.
PHP:
1
2
3
4
$path = '/bla/blah/blaat';
$pos = strrpos($path,'/');
$woord = substr($path,($pos === false)?0:++$pos);
echo $woord;

Wanneer er geen separator is wordt in dit geval $path weergegeven.


regular expressions voor deze simpele problemen zouden verboden moeten worden.

[ Voor 5% gewijzigd door stekkel op 21-10-2003 21:34 ]


Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
stekkel schreef op 21 oktober 2003 @ 21:31:
what een overkill allemaal.
PHP:
1
2
3
4
$path = '/bla/blah/blaat';
$pos = strrpos($path,'/');
$woord = substr($path,($pos === false)?0:++$pos);
echo $woord;

Wanneer er geen separator is wordt in dit geval $path weergegeven.


regular expressions voor deze simpele problemen zouden verboden moeten worden.
Als of het verschil echt merkbaar is op een beetje server. Het is maar net wat het duidelijkst is. Iedereen zijn eigen smaak (tot op zekere hoogt natuurlijk :P)

Noushka's Magnificent Dream | Unity


Acties:
  • 0 Henk 'm!

  • Hu9o
  • Registratie: Mei 2001
  • Laatst online: 21:46

Hu9o

Schokkend

Hmm, standaard algorimte is zo'n geval is toch gewoon:
Draai string om,
Pak positie 1 tot scheidingsteken
Draai gepakte string weer om.
Klaar.

>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<


Acties:
  • 0 Henk 'm!

  • stekkel
  • Registratie: Augustus 2001
  • Laatst online: 17-09 08:05
Michali schreef op 21 October 2003 @ 21:35:
[...]


Als of het verschil echt merkbaar is op een beetje server. Het is maar net wat het duidelijkst is. Iedereen zijn eigen smaak (tot op zekere hoogt natuurlijk :P)
Maakt niet uit. Wanneer het algemeen bekent is dat het gebruik van preg_match trager is dan het gebruik van de simpele snelle strpos en substr functies en je kan in dit geval volstaan met deze snelle functies dan zie ik geen enkele reden waarom het gebruik van preg_match te prevaleren valt boven strpos/substr oplossingen.

Beter bij voorbaat gelijk goed doen dan er achteraf achterkomen dat snelheid ineens wel een issue wordt. Ooit komt er een dag wanneer het er wel toe doet. :P

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
Hu9o schreef op 21 October 2003 @ 21:39:
Hmm, standaard algorimte is zo'n geval is toch gewoon:
Draai string om,
Pak positie 1 tot scheidingsteken
Draai gepakte string weer om.
Klaar.
Hoe kom daar nou bij! 8)7 Als je het laatste boek van een boekenplank wil pakken, ga je toch ook niet eerst de hele reeks boeken omdraaien, het eerste boek pakken, en vervolgens alle boeken weer op de oorspronkelijke plaats terugzetten?

Neen: je zoekt gewoon het laatste boek op (zoals stekkel doet met strrpos) en dat pak je!

Overigens ben ik in principe niet tegen reguliere expressies voor dit soort problemen, al werken die in PHP toch altijd net even wat minder makkelijk dan in een taal als Perl. Ik zou dan trouwens geen replace doen, maar gewoon matchen op "/([^/])$". De beste oplossing voor dit probleem lijkt me echter gewoon de (al genoemde) standaardfunctie basename gebruiken. Nooit maken wat al bestaat!

[ Voor 11% gewijzigd door Soultaker op 22-10-2003 00:04 ]


Acties:
  • 0 Henk 'm!

  • Hu9o
  • Registratie: Mei 2001
  • Laatst online: 21:46

Hu9o

Schokkend

Soultaker schreef op 22 October 2003 @ 00:03:
[...]

Hoe kom daar nou bij! 8)7 Als je het laatste boek van een boekenplank wil pakken, ga je toch ook niet eerst de hele reeks boeken omdraaien, het eerste boek pakken, en vervolgens alle boeken weer op de oorspronkelijke plaats terugzetten?
{knip}
De reden waarom jij makkelijk en snel kan zien wat het laatste boek is, is omdat jij naar alle waarschijnlijkheid meer inzicht hebt dan een computer.
Maar als jij een retard (:p) zou zijn en je zou het laatste boek willen, dan ga je dus precies tewerk zoals in het algoritme van mij.

Je loopt naar het eind van de plank, en gaat vervolgens terug werken. Je zet je ene hand aan het begin van het eerste boek dat je tegen komt en je tweede hand aan het eind van dat zelfde boek.
Het boek dat je vervolgens hebt ingesloten is het laatste boek van de plank.

>>>>>>>>>>>>>>>>>>>>>>>>>Vertel Microsoft over dit probleem <<<<<<<<<<<<<<<<<<<<<<<<<

Pagina: 1