Могу ли я использовать str_replace дважды в одной строке?

<?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)

потому что апостроф не проходит корректно и портится в моем коде, но когда я впервые использую его с пробелами, он уже пройден и больше не изменится.

Что я могу сделать?

1

Решение

Если вы хотите сделать несколько замен для одной и той же строки, вы можете передать массивы str_replace:

str_replace(array(" ", "'"), array("+", "%27"), $artist)

Однако при создании параметров URL вы не должны делать замены самостоятельно. Вы должны использовать urlencode, и он будет делать все необходимые кодировки.

5

Другие решения

Попробуй это. Это также делает ваш код более читабельным. Кроме того, ваши теги привязки отформатированы неправильно.

$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>';
1

Если я правильно понял ваш вопрос, вы пытаетесь заменить пробелы на + и ‘на% 27 в двух строках. Чтобы достичь этого, вы должны подать заявку str_replace() по итогам первой операции. Если $input исходная строка, используйте:

$intermediate = str_replace(" ", "+", $input);
$result = str_replace("'", "%27", $intermediate);
1

Существует встроенная функция, которая делает то же самое, что и вы: 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
0
По вопросам рекламы [email protected]