Jag behöver ett skript som gör följande:
Givet en URL i en variabel, så ska skriptet avgöra om det är en katalog eller fil, dett ska kollas genom att se om det finns en punkt sist i URL'en samt om den slutar på /. Alltså:
Följande ska alltså tolkas som en... fil: http://www.doman.com/abc/def/ghi.html
mapp: http://www.doman.com/abc/def/ghi.html/
mapp: http://www.doman.com/abc/def
mapp: http://www.doman.com/abc/def/
Vidare ska den plocka ut allt som kommer efter domännamnet och en katalog, i detta fall abc. Alltså vill jag i respektive exempel ovan få ut: /def/ghi.html
/def/ghi.html/
/def
/def/
Allt detta gärna med en (eller flera) regexps.
if (preg_match('/\\.[^\\/]+$/i', $str)){
print "This is a file";
}
else {
print "This is a folder";
}
print preg_replace('/^https?:\\/\\/(?:[^\\/]+\\/){2}(.*)$/', '\\/${1}', $str);
Avkänningen av fil/mapp funkar som jag vill. Dock verkar inte ersättningen lyckas. Den exakta strängen som jag vill ta bort är http://www2.hemsida.net/dtd i början av adressen.
Dock verkar varken
print preg_replace('http\:\/\/www2\.hemsida\.net\/dtd', '', $str);
// eller
print preg_replace('http://www2.hemsida.net/dtd', '', $str);
Eftersom jag inte är någon PHP-guru testade jag mitt uttryck här med bra resultat. Sedan knåpade jag ihop koden ovan med hjälp av manualen. Någon med bättre koll kanske kan se vad som gått snett.
Med lite trixande lyckades jag få till en lösning som funkar för mitt syfte:
if (preg_match('/\.[^\/]+$/i', $str)){
print "This is a file";
}
else {
print "This is a folder";
}
echo '/' . preg_replace('/^https?:\/\/(?:[^\/]+\/){2}/', '', "http://www2.hemsida.net/dtd/vadsomhelst");
Den sista raden var jag tvungen att ändra på för att den skulle funka. Det beror troligen på skillnader i PHP-versionerna eller något.
Hur avgör jag vilken webbadress som användaren skrivit in? Jag antar att det är enklast att avgöra det genom en if-sats och sedan redirect till ovanstående url?
Tacksam för kodhjälp!
Mvh Marcus
266 ms totalt · 4 externa anrop · v20260731065814-full.0583408b