[PHP] url herschrijven

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Currahee
  • Registratie: November 2004
  • Laatst online: 22:05

Currahee

3 miles up, 3 miles down!

Topicstarter
Momenteel werk ik aan een foto site waarbij externe url's van foto's (de foto's en thumbnails staan niet op dezelfde host als de php pagina's) worden opgeslagen in een database. Een voorbeeld van een url die wordt opgeslagen is http://www.site.nl/map1/map2/imagenaam.jpg waarbij het aantal mappen per opgeslagen url kan verschillen. Hij slaat dus wel de url van de foto op maar niet die van de thumbnail (die wel in dezelfde map staan).

Nu wil ik graag de thumbnails weergeven op de pagina, maar daarvoor moet de opgehaalde url uit de database worden herschreven. De url dient dan herschreven te worden naar http://www.site.nl/map1/map2/thumb_imagenaam.jpg. Nu ben ik nogal een leek op het gebied van regular expressions en weet ik niet hoe ik dit moet oplossen. Ik ben zelf gekomen tot onderstaande code waarbij het woord thumb_ wordt gezet na de eerste slash van http://.

PHP:
1
$url = preg_replace("/\/(.*?)\.jpg/si","/thumb_\\1.jpg", $arr_foto['url']);


Ik snap wel waarom hij thumb_ daar neerzet, maar heb te weinig kennis van regular expressions om het op te lossen. Wie kan mij helpen met dit waarschijnlijk simpele probleem.

Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$url = 'http://www.site.nl/map1/map2/imagenaam.jpg';

//splits de url bij iedere slash
$pieces = explode('/', $url);

//index van het laatste stukje van de url (bestandsnaam)
$i = count($pieces) - 1;

//zet thumb_ voor de bestandnaam
$pieces[$i] = 'thumb_'.$pieces[$i];

//plak de stukjes weer aan elkaar met een / er tussen
$thumb_url = implode('/', $pieces);

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Currahee schreef op woensdag 25 juni 2008 @ 21:46:
Ik snap wel waarom hij thumb_ daar neerzet, maar heb te weinig kennis van regular expressions om het op te lossen. Wie kan mij helpen met dit waarschijnlijk simpele probleem.
Lastig. [google=regular expressions]? ;)

spoiler:
"#[^/]+$#","thumb_$0"

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

Johnny schreef op woensdag 25 juni 2008 @ 21:58:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$url = 'http://www.site.nl/map1/map2/imagenaam.jpg';

//splits de url bij iedere slash
$pieces = explode('/', $url);

//index van het laatste stukje van de url (bestandsnaam)
$i = count($pieces) - 1;

//zet thumb_ voor de bestandnaam
$pieces[$i] = 'thumb_'.$pieces[$i];

//plak de stukjes weer aan elkaar met een / er tussen
$thumb_url = implode('/', $pieces);
krijg je met deze oplossing niet het probleem dat er maar 1 / bij http:// komt ?

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

  • Currahee
  • Registratie: November 2004
  • Laatst online: 22:05

Currahee

3 miles up, 3 miles down!

Topicstarter
Beide bedankt voor de reactie, maar heb de mogelijkheid van pedorus gebruikt, omdat deze korter is.
pedorus schreef op woensdag 25 juni 2008 @ 22:00:
Lastig. [google=regular expressions]? ;)
Ik heb genoeg gezocht naar regular expressions via google, maar als beginneling is het niet altijd even makkelijk. Als je je al 2 uur hebt lopen ergeren is het misschien even ergens vragen beter voor de bloeddruk :X
Peluso schreef op woensdag 25 juni 2008 @ 22:04:
[...]
krijg je met deze oplossing niet het probleem dat er maar 1 / bij http:// komt ?
Nee, want hij knipt bij iedere / dus bij http:// knipt hij twee keer en krijg je ook twee values in de string. Als je dan twee stukjes er weer aanplakt krijg je ook twee keer een / erbij.

[ Voor 29% gewijzigd door Currahee op 25-06-2008 22:10 ]


Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 18-09 11:40
Currahee schreef op woensdag 25 juni 2008 @ 22:06:
Beide bedankt voor de reactie, maar heb de mogelijkheid van pedorus gebruikt, omdat deze korter is.
en netter, sneller, eleganter, etc. ;)
Klein cursusje regexen is nooit weg, TS. Kom je op veel meer plekken tegen dan webscripting.

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

  • Johnny
  • Registratie: December 2001
  • Laatst online: 14:39

Johnny

ondergewaardeerde internetguru

gertvdijk schreef op woensdag 25 juni 2008 @ 22:12:
[...]

en netter, sneller, eleganter, etc. ;)
Klein cursusje regexen is nooit weg, TS. Kom je op veel meer plekken tegen dan webscripting.
Of het sneller is betwijfel ik, over het algemeen zijn reguliere expressies vele malen langzamer dan explode, maar in dit geval zal het verschil dusdanig klein zijn dat het te verwaarlozen is.

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.

Pagina: 1