Deel van URL strippen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Yordy Rathernot

Yordy Rathernot

08/09/2011 00:14:19
Quote Anchor link
Beste..

Ik zou graag willen weten hoe ik een deel van een url kan weghalen. Het gedeelte wat ik weg wil hebben staat altijd achter een - (koppelteken) wat voor de rest nergens in de url voor gaat komen.

Het volgende script heb ik op mijn pagina:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$thumbnail_id
=get_the_post_thumbnail($post->ID);
preg_match ('/src="(.*)" class/',$thumbnail_id,$link);

<
a href="echo $link[1];" rel="lightbox">the_post_thumbnail();</a>
?>


Wat dit doet is de thumbnail url opvragen, deze bevat standaard allerlei extra attributen zoals classes, titles, etc. Doormiddel van preg_match(..) stript hij de url tot .jpg.

Wat ik overhoudt is een volgende url:
http://www.domain.com/directory/imagenaam-e1234567890123.jpg

Dit is prima, omdat dit de kale URL is zonder extra attributen, maar het gedeelte "-e1234567890123" voor .jpg zou ik ook graag weg willen hebben, zo houdt ik namelijk de originele foto over welke ik via vervolgens via lightbox laat uitvergroten.

(de imagenaam-e123456789123.jpg is een gecropte versie van het plaatje)

Het gedeelte dat weg moet begint dus altijd met -, en vervolgens 14 letters en/of cijfers.

Ik heb al enige tijd gezocht hoe preg_match precies werkt maar ik kom er niet uit.
is er iemand die mij hiermee kan helpen?

Alvast bedankt!

Mvg,
Yordy
Gewijzigd op 08/09/2011 00:18:24 door Yordy Rathernot
 
PHP hulp

PHP hulp

05/12/2022 13:32:41
 
Tim S

Tim S

08/09/2011 00:34:48
Quote Anchor link
Deze zou moeten werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$url
= 'http://www.domain.com/directory/imagenaam-e1234567890123.jpg';
if(preg_match('/(\-{1}[a-z0-9]{14})\.jpg$/i', $url, $matches)) {
    $url = str_replace($matches[1], '', $url);
    echo $url;
}
else{
    echo 'geen matches';
}

?>
 
Yordy Rathernot

Yordy Rathernot

08/09/2011 09:49:26
Quote Anchor link
Bedankt voor de hulp so far, maar het werkt nog niet helemaal.
Wanneer ik de code rechtstreeks copy (en enkel de inhoud van de url wijzig) geeft hij "geen matches"

De volgende code dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$url
= get_the_post_thumbnail($post->ID);;
if(preg_match('/(\-{1}[a-z0-9]{14})\.jpg$/i', $url, $matches)) {
$url = str_replace($matches[1], '', $url);
echo $url;
}
else{
echo 'geen matches';
}


?>


Enig idee nog?

Wat betekent trouwens $/i? haalt hij hiermee al het overige achter .jpg weg?

Alvast bedankt!
 
Tim S

Tim S

08/09/2011 10:59:14
Quote Anchor link
de "$" wil zeggen dat de regexp die je invoert overeenkomt met het laatste stuk van je invoer. En de "i" wil zeggen dat het niet hoofdlettergevoelig is.

Verder kijkt deze alleen naar .jpg's, misschien ligt daar het probleem?


Dus in principe kijkt hij nu of je url eindigt met "-[randomcrap die uit 14 letters en cijfers bestaat ].jpg"
Gewijzigd op 08/09/2011 11:15:24 door Tim S
 
Jacco Engel

Jacco Engel

08/09/2011 11:19:41
Quote Anchor link
$url = get_the_post_thumbnail($post->ID);;
print $url;

Zou je dit eens kunnen doen en het resultaat hier neer zetten?
 
Yordy Rathernot

Yordy Rathernot

08/09/2011 11:39:43
Quote Anchor link
Het resultaat daarvan is:

http://www.domain.nl/wp-content/uploads/voorbeeld_foto2-e1315313305763.jpg"; class="attachment-post-thumbnail wp-post-image" alt="Voorbeeld Foto 2" title="Voorbeeld Foto 2"

zoals je ziet voegt hij hier nog allerlei attributen toe zoals alt, class en title.
Dit is al weggehaald met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php preg_match ('/src="(.*)" class/',$thumbnail_id,$link); ?>
.

Nu enkel nog dus het gedeelte -e12345678900 voor de jpg zodat ik
http://www.domain.nl/wp-content/uploads/voorbeeld_foto2.jpg overhoudt.
 
Jacco Engel

Jacco Engel

08/09/2011 11:46:49
Quote Anchor link
Denk dat je implementatie te wensen over laat, no offence.

Als ik namelijk :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php

$url
= "http://www.domain.nl/wp-content/uploads/voorbeeld_foto2-e1315313305763.jpg" ;
if(preg_match('/(\-{1}[a-z0-9]{14})\.jpg$/i', $url, $matches)) {
$url = str_replace($matches[1], '', $url);
echo $url;
}
else{
echo 'geen matches';
}


?>


Krijg ik exact de gewenste URL :), probeer bovenstaand maar eens als LOS php script te draaien dan zie je wel wat ik bedoel
 
- SanThe -

- SanThe -

08/09/2011 11:57:11
Quote Anchor link
De code van Jacco is okee.
Het gaat al mis in jouw eerste eigen code.

preg_match ('/src="(.*)" class/',$thumbnail_id,$link);

Ik zie nergens 'src'
Gewijzigd op 08/09/2011 11:59:21 door - SanThe -
 
Yordy Rathernot

Yordy Rathernot

08/09/2011 11:59:43
Quote Anchor link
Hi jacco,

Je code klopt inderdaad als ik hem rechtstreeks kopieer. Bedankt alvast daarvoor :)

Ik denk dat het probleem is dat ik bij $url = niet hard de image url kan zetten, deze is per post anders en moet dus dynamisch worden opgehaald. Dit gebeurt met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php get_the_post_thumbnail($post->ID); ?>


Wanneer ik dus in jou stuk code
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $url = "http://www.domain.nl/wp-content/uploads/voorbeeld_foto2-e1315313305763.jpg" ; ?>


vervang met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php $url = get_the_post_thumbnail($post->ID); ?>


werkt het niet meer. De url die daar uitkomt is dus:

http://www.domain.nl/wp-content/uploads/voorbeeld_foto2-e1315313305763.jpg"; class="attachment-post-thumbnail wp-post-image" alt="Voorbeeld Foto 2" title="Voorbeeld Foto 2"

Vervolgens laat hij daar jou gedeelte van die preg_match code op los. Maar dat is dus op een heel andere URL dan de harde URL zonder class, alt, en title..






Toevoeging op 08/09/2011 12:02:52:

Eigenlijk zou je bij jouw code in de preg_match de rest van de attributen moeten weghalen, dan klopt het.

Is dat mogelijk? dat je ook class=.., alt=.. etc. weghaalt? wat achter .jpg staat
Gewijzigd op 08/09/2011 12:05:09 door Yordy Rathernot
 
Jacco Engel

Jacco Engel

08/09/2011 12:04:37
Quote Anchor link
Dan zit het probleem zoals Santhe al zei niet in de code die we zitten te debuggen (of pogen) maar in de URL zoals jij deze aan het stukje code aanlevert :)
 
- SanThe -

- SanThe -

08/09/2011 12:08:11
Quote Anchor link
- SanThe - op 08/09/2011 11:57:11:
De code van Jacco is okee.
Het gaat al mis in jouw eerste eigen code.

preg_match ('/src="(.*)" class/',$thumbnail_id,$link);

Ik zie nergens 'src'



Helaas, dit was niet juist.

Ik heb van jullie beiden scripts een combi gemaakt en die werkt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$thumbnail_id
=get_the_post_thumbnail($post->ID);
preg_match ('/src="(.*)" class/',$thumbnail_id,$link);
preg_match('/(\-{1}[a-z0-9]{14})\.jpg$/i', $link[1], $matches);
$url = str_replace($matches[1], '', $link[1]);
echo '<a href="' . $url . '" rel="lightbox">the_post_thumbnail()</a>';
?>
Gewijzigd op 08/09/2011 12:08:44 door - SanThe -
 
Yordy Rathernot

Yordy Rathernot

08/09/2011 12:12:32
Quote Anchor link
Een combinatie van beide scripts did the trick!
Problem solved!

Heel erg bedankt Tim, SanThe en Jacco
Gewijzigd op 08/09/2011 13:05:19 door Yordy Rathernot
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.