2012-03-07 2 views
3

у меня есть вопрос, где даже если заменить пространства на% 20 и получить ссылку на этот материал окончательный URL браузер получает переворачивает «% 20» в «% 2520»file_get_contents с пробелами в URL

Вот мой код , любые предложения, чтобы заставить это работать? это кажется легким, но я застрял:/

<?php 
//$_GET['song'] will contain a song name with spaces 
$song = str_replace(array("%20", "&", "?" , "/"), array(" ", "", "", ""), $_GET['song']); 

// I use this to check how the GET 'song' looks after the str_replace 
$list = "http://www.lyrdb.com/lookup.php?q=" . $song . "&for=fullt"; 
echo "list url is " . $list . "<hr>"; 

$content = file_get_contents("http://www.lyrdb.com/lookup.php?q=" . str_replace(" ", "%20", $song) . "&for=fullt"); 

echo $content; 
?> 

если вы идете в http://webservices.lyrdb.com/lookup.php?q=red%20hot%20chili%20peppers&for=fullt Результат должен вывести список лирических кодов.

Когда я иду на свой сайт /? Song = red hot chili peppers, он тоже преобразует пробелы в% 20, но если кажется, что браузер преобразует% в% 25.

Может кто-нибудь помочь мне?

ответ

9
$song = $_GET['song']); 

$url = "http://www.lyrdb.com/lookup.php?for=fullt&q="; 

echo "list url is " . htmlentities($url . $song) . "<hr>"; 

$content = file_get_contents($url . urlencode($song)); 

echo $content; 
+0

СПАСИБО ТЕБЯ ЧЕЛОВЕК !!!! (есть a) после первой строки, но кроме этого СПАСИБО! Когда я пытался использовать urlencode и htmlentities вместе, но это вызвало проблемы. Я не могу вас поблагодарить! –

+1

@LearningDaily 'htmlentities' и аналогичные функции должны использоваться, когда вы хотите вывести что-то на страницу с данными, полученными от пользователя. это помогает предотвратить атаки XSS. 'urlencode' необходим для преобразования параметров запроса URL в RFC-стандарт передачи данных методом GET. – Cheery