Frontpage Skrevet 19. juli 2014 Del Skrevet 19. juli 2014 Hei, jeg prøver og lage et lite php script som gjør http linkene til Spotify til URI heller, men trenger litt hjelp til det. :SDette er hva jeg har så langt (beklager viss det er stygt og se på, muligens unødvendig langt også) $str = "https://play.spotify.com/user/jvcarone/playlist/0uSi9le21PmQahkykUoBm0"; $str2 = str_ireplace("http://open.","",$str); $str3 = str_ireplace("https://play.","",$str2); $str4 = str_ireplace(".com","",$str3); $str5 = strstr($str4, '?play', true); echo str_ireplace("/",":",$str5); echo($str5); echo("\r\n"); echo($str4); echo("\r\n"); echo($str3); echo("\r\n"); echo($str2); Men problemet oppstår i linje 5 med "?play" delen, siden det eksisterer 2 typer av disse linkene ser den ene slik ut:https://play.spotify.com/user/shadowfunk/playlist/0JcaH9B5yrD7ST90pg93ii?play=true&utm_source=open.spotify.com&utm_medium=openEller slik:http://open.spotify.com/user/umealratnhde/playlist/5NQfCmvOiVyNRR2XUDBGUhNår det er den første så går det greit men den siste så sletter den alt på. Prøver og få det til og virke skikkelig.Takk for all hjelp på forskudd! Lenke til kommentar
etse Skrevet 19. juli 2014 Del Skrevet 19. juli 2014 Hvis du heller forklarer hva du prøver å oppnå er det lettere for oss å hjelpe, og eventuelt komme med forslag til en bedre fremgangsmåte. Det ser veldig ut som noe som burde løses med regulære utrykk.men du er ny i PHP, så det kan virke veldig skummelt. Men desto tidliggere du lærer det, desto bedre vil du ha det i fremover Lenke til kommentar
Frontpage Skrevet 20. juli 2014 Forfatter Del Skrevet 20. juli 2014 (endret) Hvis du heller forklarer hva du prøver å oppnå er det lettere for oss å hjelpe, og eventuelt komme med forslag til en bedre fremgangsmåte. Det ser veldig ut som noe som burde løses med regulære utrykk.men du er ny i PHP, så det kan virke veldig skummelt. Men desto tidliggere du lærer det, desto bedre vil du ha det i fremover Ønsker og fjerne deler av linken til og få URIen som ser slik ut spotify:track:7I9iIwfPHlHk0qg4GXHV7m Og endre på teksten til og få det. Men må legge in en if https er i teksten gjør det slik eller viss http er i teksten gjør det slik eller print "feil link" Beklager for dorlig formulering. Endret 20. juli 2014 av Frontpage Lenke til kommentar
snippsat Skrevet 20. juli 2014 Del Skrevet 20. juli 2014 Regex blir noe i denne stilen \.(.*)\.com/user/(.*)/playlist/(.*)\? Test: >>> import re >>> r = re.findall(r'\.(.*)\.com/user/(.*)/playlist/(.*)\?', url_1) >>> r [('spotify', 'shadowfunk', '0JcaH9B5yrD7ST90pg93ii')] >>> ':'.join(r[0]) 'spotify:shadowfunk:0JcaH9B5yrD7ST90pg93ii' >>> r = re.findall(r'\.(.*)\.com/user/(.*)/playlist/(.*)\?', url_2) >>> ':'.join(r[0]) 'spotify:umealratnhde:5NQfCmvOiVyNRR2XUDBGUh' For PHP. <?php $url = "https://play.spotify.com/user/shadowfunk/playlist/0JcaH9B5yrD7ST90pg93ii?play=true&utm_source=open.spotify.com&utm_medium=open"; preg_match_all("%\.(.*)\.com/user/(.*)/playlist/(.*)\?%", $url, $result); print $result[3][0]; //0JcaH9B5yrD7ST90pg93ii ?> join som jeg setter sammen : i Python koden,er for PHP implode Lenke til kommentar
etse Skrevet 20. juli 2014 Del Skrevet 20. juli 2014 (endret) Så du ønsker å hente ut "7I9iIwfPHlHk0qg4GXHV7m", og så printe det ut etter "spotify:track:"? Da handler det om å finne et mønster i URLene. Slik jeg ser det vil det alltid komme etter /playlist og før et spørsmålstegn (om det er et spørsmålstegn der). I python ville noe slikt funket, ikke helt kjent med PHP: playlist/([a-zA-Z0-9]+)[?]+men det ville vært noe slikt som: I koden under vil da resultatet lagres i variabelen matches. preg_match('playlist/([a-zA-Z0-9]+)[?]+', $spotify_url $matches);Edit: jeg var faktisk så treg at noen hadde svart 10 minutter før meg uten at jeg oppdaget det Ser og at eksemepelet hans er mye bedre - og jeg har ikke tatt hensyn til at du ønsker å hente ut user også. Endret 20. juli 2014 av etse Lenke til kommentar
Frontpage Skrevet 20. juli 2014 Forfatter Del Skrevet 20. juli 2014 Regex blir noe i denne stilen \.(.*)\.com/user/(.*)/playlist/(.*)\? Test: >>> import re >>> r = re.findall(r'\.(.*)\.com/user/(.*)/playlist/(.*)\?', url_1) >>> r [('spotify', 'shadowfunk', '0JcaH9B5yrD7ST90pg93ii')] >>> ':'.join(r[0]) 'spotify:shadowfunk:0JcaH9B5yrD7ST90pg93ii' >>> r = re.findall(r'\.(.*)\.com/user/(.*)/playlist/(.*)\?', url_2) >>> ':'.join(r[0]) 'spotify:umealratnhde:5NQfCmvOiVyNRR2XUDBGUh' For PHP. <?php $url = "https://play.spotify.com/user/shadowfunk/playlist/0JcaH9B5yrD7ST90pg93ii?play=true&utm_source=open.spotify.com&utm_medium=open"; preg_match_all("%\.(.*)\.com/user/(.*)/playlist/(.*)\?%", $url, $result); print $result[3][0]; //0JcaH9B5yrD7ST90pg93ii ?> join som jeg setter sammen : i Python koden,er for PHP implode Tusen takk for svar! Men ser jeg har sanne problem her som med den tullete koden øverst, viss jeg limer inn link som er "http://open.spotify.com/user/umealratnhde/playlist/5NQfCmvOiVyNRR2XUDBGUh" Så har den ingenting resultat. Lenke til kommentar
Frontpage Skrevet 20. juli 2014 Forfatter Del Skrevet 20. juli 2014 Løste det slik, ser ut til og virke. Sikkert klønete måte og gjøre det på. $a = 'http://open.spotify.com/track/2KxhF586Y476wrV8YnbexR'; if (preg_match('@https://@',$a)) { $str2 = str_ireplace("http://open.","",$a); $str3 = str_ireplace("https://play.","",$str2); $str4 = str_ireplace(".com","",$str3); $str5 = strstr($str4, '?play', true); echo str_ireplace("/",":",$str5);} elseif (preg_match('@http://@',$a)) { $str2 = str_ireplace("http://open.","",$a); $str3 = str_ireplace("https://play.","",$str2); $str4 = str_ireplace(".com","",$str3); $str5 = strstr($str4, '?play', true); echo str_ireplace("/",":",$str4);} else echo "I belive the URL is wrong, does it start with http?"; Lenke til kommentar
snippsat Skrevet 20. juli 2014 Del Skrevet 20. juli 2014 viss jeg limer inn link som er "http://open.spotify....OiVyNRR2XUDBGUh" Så har den ingenting resultat Da gjør nok du noe rart,her en online test. Nå har jo du fått satt sammen noe,så da er det vel greit. Lenke til kommentar
etse Skrevet 20. juli 2014 Del Skrevet 20. juli 2014 (endret) Snippsat, koden din tok ikke hensyn til at det ikke alltid er spørsmålteg på slutten. Den er der bare av og til. Man kan dermed med en liten endring gjøre noe som dette: $url = "http://open.spotify.com/user/umealratnhde/playlist/5NQfCmvOiVyNRR2XUDBGUh"; preg_match_all("%\.(.*)\.com/user/(.*)/playlist/(\w*)[?]?%", $url, $result); print $result[1][0]."\n"; print $result[2][0]."\n"; print $result[3][0]."\n"; Endret 20. juli 2014 av etse Lenke til kommentar
Frontpage Skrevet 20. juli 2014 Forfatter Del Skrevet 20. juli 2014 Takk igjen, den siste virket som jeg ønsket. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå