<?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)
因为撇号没有经过正确处理并且与我的代码混淆,但是当我首先使用空格时,它已经通过并且不会再次改变。
我该怎么办?
答案 0 :(得分:5)
如果要对同一个字符串进行多次替换,可以将数组传递给str_replace
:
str_replace(array(" ", "'"), array("+", "%27"), $artist)
但是,在创建网址参数时,您不应自行进行替换。您应该使用urlencode
,它将执行所有必要的编码。
答案 1 :(得分:1)
试试这个。它还使您的代码更具可读性。此外,您的锚标签格式不正确。
$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>';
答案 2 :(得分:1)
如果我正确理解了您的问题,那么您正试图在两个字符串中用+和'替换%27。为此,您必须对第一个操作的结果应用str_replace()
。如果$input
是原始字符串,请使用:
$intermediate = str_replace(" ", "+", $input);
$result = str_replace("'", "%27", $intermediate);
答案 3 :(得分:0)
有一个内置函数可以执行您尝试执行的操作: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