2014-09-20 2 views
1
<?php 
echo "I'm currently listening to</a> <a href='http://last.fm/artist/" . str_replace(" ","+",$artist) . "/_/" . str_replace(" ","+",$currenttrack) . "'>" . $currenttrack . "</a>"; 
?> 

위 코드는 제 코드입니다. 내가 좋아하는 $artist$currenttrack에 다시 str_replace()를 사용하려고 해요 : 제대로 망쳐 놨 내 코드를 통해하나의 문자열에서 str_replace를 두 번 사용할 수 있습니까?

아포스트로피가 이동하지 않기 때문에

str_replace("'","%27",$artist)str_replace("'","%27",$currenttrack),하지만 난 공백으로 먼저 사용하는 경우, 그것은 이미 통과되었으며 다시 변경되지 않습니다.

어떻게해야합니까?

답변

5

같은 문자열에서 여러 교체하고 싶은 경우에, 당신은 str_replace에 배열을 전달할 수 있습니다

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

을하지만, URL 매개 변수를 만들 때, 당신은 자신을 대신해서는 안됩니다. urlencode을 사용해야하며 필요한 모든 인코딩을 수행합니다.

+2

+1 .. 누군가가이 대답을 왜곡 한 이유를 모르겠다. str_replace를 사용하여 실제로 해결하는 유일한 방법이다. –

+0

감사합니다. 지금 당장. – Cody

+0

이것은 일했습니다, 고맙습니다! – Cody

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>'; 
+0

urlencode 감사합니다. 지금 당장. – Cody

1

질문을 올바르게 이해했다면 두 개의 문자열에서 공백을 + 및 by % 27로 바꾸려고합니다. 이를 수행하려면 str_replace()을 첫 번째 연산의 결과에 적용해야합니다. $input 원래 문자열 인 경우, 사용

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

은 당신이 할하려는 동일한 기능을 수행 할 기능 내장있다 :

$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