PHP Suchen und ersetzen in einem besonderen Fall

hemorieder

Lieutenant
Registriert
März 2003
Beiträge
652
Hey,

ich habe folgendene Situation:

Es gibt zwei verschiedene Arten von Links, einmal so:

Code:
https://behalten.de/behalten/soll_weg/soll_weg/behalten.jpg

und

Code:
https://behalten.de/behalten/soll_weg/behalten.jpg

also diese zwei konstallationen.

Und wie meine lustigen namen schon verraten, sollen alle sachen weg die "soll_weg" heißen. ;)

Diese beiden "soll_weg" haben allerdings immmer unterschiedliche Namen genauso wie auch der rest, also ich kann nicht explizit nach dem oder dem suchen...

Das einzige was bleibt, sind die "/". Meine Idee wäre nun festzustellen, wieviele "/" enthalten sind, und danach vorzugehen.

Also

Wenn 6 mal ein "/" vorkommt, dann lösche alles zwischen dem vierten "/" und dem sechsten "/".

Wenn 5 mal ein "/" vorkommt, dann lösche alles zwischen dem vierten "/" und fünften "/".


Nur wie realisiere ich das?


Wäre echt klasse wenn mir jemand helfen könnte.

lg hemorieder
 
öhmmm , erstmal danke, aber irgendwie raff ich das nicht... sry

ich will im ergebnis wieder die url haben nur ohne die "soll_weg" sachen, und nich genau die sachen haben die weg sollen ?!
 
Nicht die schönste Lösung, funktioniert aber:

PHP:
function getLink($link) {
 //https:// entfernen
 $link = substr($link, 8);
 //die Domain z.B. behalten.de
 $domain = substr($link, 0 , strpos($link, '/'));
 //Domain aus $link entfernen 
 $link = substr($link, strpos($link, '/')+1);
 //das erste Verzeichniss:
 $dir = substr($link, 0 , strpos($link, '/'));
 //dateiname
 $filename = substr($link, strrpos($link, '/'));
 return "https://".$domain."/".$dir.$filename;

}


$link = "https://behalten.de/behalten/soll_weg/soll_weg/behalten.jpg";
echo getLink($link);

echo "<br>";

$link = "https://behalten.de/behalten/soll_weg/behalten2.jpg";
echo getLink($link);


Das Script gibt folgendes aus:

 
Sollte für deinen ersten Link funktionieren:

Protokoll und Servername exklusive:


Code:
$reqUriParts = explode('/',$_SERVER[REQUEST_URI]);

if( count($reqUriParts) == 5){
    array_splice($reqUriParts, 2, -1);
    $newReqUri = implode('/',$reqUriParts);
}

echo $newReqUri;



Code:
RequestUri = '/behalten/soll_weg/soll_weg/behalten.jpg'
Output     = '/behalten/behalten.jpg'
 
Zuletzt bearbeitet:
Funktioniert für beide Links.

PHP:
$parts = explode("/", $url);
$x = count($parts);
if ($x === 6 || $x === 7) {
  array_splice($parts, 4, $x - 5);
  $url = implode("/", $parts);
}
 
Zurück
Oben