woord uit string verwijderen

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.260
Hallo,

Ik heb pad van afb. als bijv. /upload/files/map/123.jpg

Alleen /upload moet verwijderd worden als het tenminste bestaat in de string
dus : /files/map/123.jpg

Deze werkt niet , die halveert de string.

PHP:
$image  = ' /upload/files/map/123.jpg';
$image  = str_replace('/upload', '', $image);


Dit werkt maar een volgende keer worden weer de eerste 8 tekens verwijderd als ik formulier opnieuw opsla , is dus ook niet bruikbaar voor mij , resultaat na 2e keer opslaan : ap/123.jpg

PHP:
$image =substr($image,7);

Iemand de juiste oplossing?


Oplossing gevonden

$image = /upload/files/map/123.jpg;
$string = $image;
$image = str_ireplace("/upload",".", $string);
 
Laatst bewerkt:
of tegen het 2 keer sturen van het form
Code:
$image = ' /upload/files/map/123.jpg';
if (!isset($urlReplace)) {
  $image = str_replace('/upload', '', $image);
  $urlReplace = true;
}
 
Ik weet niet waarom str_replace niet werkt, dit halveert de string niet.

Maar uit je antwoord blijkt dat je een relatieve URL wilde, immers in je oplossing vervang je het door een punt, wat betekent dat het pad "./files/map/123.jpg" nu wordt gezocht vanuit de huidige directory; dus is in dat geval equivalent aan "files/map/123.jpg" maar zónder de slash ervoor, dus niet "/files/map/123.jpg".
 
Okay dat is prima, schat, maar ireplace is alleen maar de case insensitive versie van replace, dus doet niet moeilijk over hoofdletters.
Weet je zeker dat je probleem al opgelost is?

In elk geval het zou gewoon moeten werken natuurlijk...
 
Wat is op dit moment de vraag? De str_ireplace werkt hier doeltreffend.
Code:
$image = 'https://www.example.nl/upload/files/map/123.jpg';
echo $image . '<br>';
$image = str_ireplace('/upload', '', $image);
echo $image;

Resultaat
https://www.example.nl/upload/files/map/123.jpg
https://www.example.nl/files/map/123.jpg

en als je een relatieve url gebruikt is het resultaat

/upload/files/map/123.jpg
/files/map/123.jpg
 
Niets, str_replace zou ook moeten werken.

En natuurlijk kun je nog denken aan preg_replace, wat ik eigenlijk wilde zeggen ;-).
 
beetje offtopic
Kies vanuit performance oogpunt altijd de simpelste, str_(i)replace is sneller dan de regex versie.
Een ander voorbeeld: wil je kijken of een string in een andere string voorkomt dan is str(i)pos sneller dan substr
 
Voor als je zeker wilt zijn dat de string aan het begin zit, bedoel ik.

^/upload
 
Als ook getest moet worden dat /upload/ vooraan staat dan kan het in 1 regel.
Code:
$url1 = '/upload/files/map/123.jpg';
$url2 = (stripos($url1,'/upload/')===0) ? str_ireplace('/upload/','/',$url1) : $url1;
Hierboven ga ik ervan uit dat je niet 2 keer /upload/ in een url hebt staan want dan moet het iets worden veranderd en moet substr() worden gebruikt.
Code:
$url1 = '/upload/files/upload/map/123.jpg';
$url2 = (stripos($url1,'/upload/')===0) ? substr($url1,7) : $url1;
Werkt beter en nog eenvoudiger :)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan