Gå til innhold

[Løst] Første PHP script, tekst manipulering. Hjelp. :)


Anbefalte innlegg

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. :S

Dette 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=open
Eller slik:
http://open.spotify.com/user/umealratnhde/playlist/5NQfCmvOiVyNRR2XUDBGUh

Nå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
Videoannonse
Annonse

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

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 av Frontpage
Lenke til kommentar

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

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 :D Ser og at eksemepelet hans er mye bedre - og jeg har ikke tatt hensyn til at du ønsker å hente ut user også. Endret av etse
Lenke til kommentar

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

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, 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 av etse
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...