PHP- variable inkorten bij 1 na laatste slash

Pagina: 1
Acties:

Onderwerpen


  • beun92
  • Registratie: Maart 2012
  • Laatst online: 00:38
hallo mensen,
ik ben nu bezig met een simpele filemanager die in mijn website komt te zitten.
nu werk ik aan een terug knop zodat je 1 level terug gaat in de mappen structuur.
dit krijg ik niet voor elkaar.
de mappen die worden weergeven is gebaseert op een get. deze word dan ingeladen in de functie.

nu weet ik alleen niet hoe ik het voor elkaar krijg om hem zo aan te passen dat hij alles weg haald na de 1 na laatste slash.

bijv. het is nu "foto's/2013/mei/" dan moet dat worden "foto's/2013/".

heeft iemand idee van hoe dat moet? ik zie even de bomen door het bos niet meer.

alvast bedankt,

groetjes beun

I love it when women go to school. It's like seeing a monkey on roller skates -- it means nothing to them, but it's so adorable for us. -- General Aladeen


  • ruurdkrekt
  • Registratie: November 2003
  • Laatst online: 18-11 15:30
Even snel getypt en het kan vast beter, maar dit is een makkelijke oplossing :)


code:
1
2
3
$blaat = explode("/", $path);
array_pop($blaat);
$new_path = implode("/", $blaat);


Edit:
Of met een substring:

code:
1
$new_path = substr($path, 0, strrpos($path, "/"));

[ Voor 21% gewijzigd door ruurdkrekt op 27-09-2013 14:41 ]


  • Kale Kiwi
  • Registratie: Juli 2008
  • Laatst online: 11:06
code:
1
$parentPath = dirname($path);


:)

  • beun92
  • Registratie: Maart 2012
  • Laatst online: 00:38
[quote]The Yorick schreef op vrijdag 27 september 2013 @ 14:42:
code:
1
$parentPath = dirname($path);

[/quorte]
dit werkt niet omdat ik de directory url tekst is.
ruurdkrekt schreef op vrijdag 27 september 2013 @ 14:34:
Even snel getypt en het kan vast beter, maar dit is een makkelijke oplossing :)


code:
1
2
3
$blaat = explode("/", $path);
array_pop($blaat);
$new_path = implode("/", $blaat);


Edit:
Of met een substring:

code:
1
$new_path = substr($path, 0, strrpos($path, "/"));
ik heb dit getest maar werkt niet helemaal zoals ik wil, wat ik nu krijg is van"foto's/2013/mei/" naar "foto's/2013/mei".

dit moet dan "foto's/2013/". de get moet dus weer eindigen met een slash. vraag me niet waarom ik dit zo heb gemaakt maar die slash moet er altijd achter. ik zal even kijken of ik dit kan aanpassen want dan werkt het wel met wat ruurdkrekt zij.

iemand nog idee hoe ik hem weer kan laten eindigen op de slash?

I love it when women go to school. It's like seeing a monkey on roller skates -- it means nothing to them, but it's so adorable for us. -- General Aladeen


  • Xesxen
  • Registratie: Juli 2009
  • Laatst online: 02-12 02:31
Disregard wat hier stond :+

[ Voor 96% gewijzigd door Xesxen op 27-09-2013 15:10 ]

Rare vogel in spe


  • Cartman!
  • Registratie: April 2000
  • Niet online
beun92 schreef op vrijdag 27 september 2013 @ 15:02:
iemand nog idee hoe ik hem weer kan laten eindigen op de slash?
Wat dacht je van er gewoon weer een slash achter zetten bijvoorbeeld?

Denk je ook aan path traversal trouwens? :)

[ Voor 8% gewijzigd door Cartman! op 27-09-2013 15:11 ]


  • beun92
  • Registratie: Maart 2012
  • Laatst online: 00:38
ik heb al wat bedacht, mischien een beetje beunhaas maar achja, is toch alleen voor intern.
ik haal 2x de laatste slash weg en voeg daarna aan het eind een slash toe.

het idee is dus dat hij hem 3x bewerkt.

1: foto's/2013/mei/ //hoe hij binnenkomt
2: foto's/2013/mei //laatste slash verwijderen + alles er achter(hier niks dus)
3: foto's/2013 //laatste slash verwijderen + alles er achter
4: foto's/2013/ //een slash toevoegen

code:
1
2
3
$change1 = substr($path, 0, strrpos($path, "/"));
$change2 = substr($change1, 0, strrpos($change1, "/"));
$change3 = $change2."/";


ik zal dit even testen

I love it when women go to school. It's like seeing a monkey on roller skates -- it means nothing to them, but it's so adorable for us. -- General Aladeen


  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
wat dacht je van
PHP:
1
$dir = substr($path, 0, (strrpos($path, "/", -1)+1));


Dat zou het in 1 regel moeten zijn :)
het derde argument van strrpos bepaalt dat hij pas moet beginnen zoeken naar een slash vanaf het voorlaatste character ipv het laatste, en de +1 bij de pos zorgt dat je de andere slash nog behoudt.

  • beun92
  • Registratie: Maart 2012
  • Laatst online: 00:38
Tharulerz schreef op vrijdag 27 september 2013 @ 15:33:
wat dacht je van
PHP:
1
$dir = substr($path, 0, (strrpos($path, "/", -1)+1));


Dat zou het in 1 regel moeten zijn :)
het derde argument van strrpos bepaalt dat hij pas moet beginnen zoeken naar een slash vanaf het voorlaatste character ipv het laatste, en de +1 bij de pos zorgt dat je de andere slash nog behoudt.
als ik het zo zie zou het logisch gezien moeten werken maar dat doet hij niet, hij doet niks, haal ik de +1 weg dan haalt hij alleen de laatste slash weg.

I love it when women go to school. It's like seeing a monkey on roller skates -- it means nothing to them, but it's so adorable for us. -- General Aladeen


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 16:34

MueR

Admin Devschuur® & Discord

is niet lief

PHP hoort in Programming

Anyone who gets in between me and my morning coffee should be insecure.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Even uit de losse pols een paar oplossingen

rtrim(dirname($file), '/')
preg_replace('!/[^/]*$!', '', $file)
strrpos($file, '/') !== false ? substr($file, 0, strrpos($file, '/') -1) : $file

Met een beetje meer geduld kan ik vast nog wel wat bedenken. Wat me vooral verbaast is hoe je wel een complete file manager kunt bouwen maar dat dit een probleem voor je is...? Heeft het iets met je nickname te maken?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • EricBruggema
  • Registratie: Maart 2007
  • Laatst online: 24-11 07:02
Waarom niet simpeler?

PHP:
1
2
3
4
5
6
$parts = explode("/", $path);
if (count($parts) > 1)
{
    unset($parts[count($parts)]);
}
$newPath = implode("/", $parts);


Niet getest maar leek mij een mooie oplossing.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 02-12 13:38
beun92 schreef op vrijdag 27 september 2013 @ 15:02:
[quote]The Yorick schreef op vrijdag 27 september 2013 @ 14:42:
code:
1
$parentPath = dirname($path);

[/quorte]
dit werkt niet omdat ik de directory url tekst is.
Dat is geen probleem hoor
http://nl3.php.net/dirname
dirname() operates naively on the input string, and is not aware of the actual filesystem, or path components such as "..".
PHP:
1
$parent = dirname(rtrim($_GET['path'], '/')) . '/';

Moet gewoon doen wat je wil.

[ Voor 28% gewijzigd door frickY op 28-09-2013 10:52 ]

Pagina: 1