<?php
echo "I'm currently listening to</a> <a href='http://last.fm/artist/" . str_replace(" ","+",$artist) . "/_/" . str_replace(" ","+",$currenttrack) . "'>" . $currenttrack . "</a>";
?>
Выше мой код. Я пытаюсь использовать str_replace()
снова на $artist
а также $currenttrack
лайк:
str_replace("'","%27",$artist)
а также str_replace("'","%27",$currenttrack)
потому что апостроф не проходит корректно и портится в моем коде, но когда я впервые использую его с пробелами, он уже пройден и больше не изменится.
Что я могу сделать?
Если вы хотите сделать несколько замен для одной и той же строки, вы можете передать массивы str_replace
:
str_replace(array(" ", "'"), array("+", "%27"), $artist)
Однако при создании параметров URL вы не должны делать замены самостоятельно. Вы должны использовать urlencode
, и он будет делать все необходимые кодировки.
Попробуй это. Это также делает ваш код более читабельным. Кроме того, ваши теги привязки отформатированы неправильно.
$artist = str_replace(' ', '+', $artist);
$track = str_replace(' ', '%27', $currenttrack);
echo 'I\'m currently listening to <a href="http://last.fm/artist/' . $artist . '/_/' . $track . '">' . $track . '</a>';
Если я правильно понял ваш вопрос, вы пытаетесь заменить пробелы на + и ‘на% 27 в двух строках. Чтобы достичь этого, вы должны подать заявку str_replace()
по итогам первой операции. Если $input
исходная строка, используйте:
$intermediate = str_replace(" ", "+", $input);
$result = str_replace("'", "%27", $intermediate);
Существует встроенная функция, которая делает то же самое, что и вы: urlencode
$currenttrack = $artist = "X' xx WWW' w";
$url = "http://last.fm/artist/" . $artist . "/_/" . $currenttrack;
echo urlencode($url); // http%3A%2F%2Flast.fm%2Fartist%2FX%27+xx+WWW%27+w%2F_%2FX%27+xx+WWW%27+w