2014-01-07 66 views
1

我想知道是否有更好的'安全'方法將字符串追加到此soundcloud嵌入的src =「」部分?作爲普通用戶將在他們的SoundCloud嵌入代碼被粘貼到一個領域,我有點擔心他們更改代碼和搞亂我的str_replace()函數了:用於追加到url的PHP str_replace()

$sc_preview_embed = '<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/110090423"></iframe>'; 

$sc_preview = str_replace('"></iframe>','&buying=false&download=true"></iframe>', $sc_preview_embed); 

是否有這樣做使用的方式通配符,以便我只在用戶的嵌入代碼中附加'&購買=虛假&下載=真'到src=""的結尾?

+0

雖然我不熟悉的SoundCloud API和諸如此類的東西,我有一個一般性的問題 - 您是否需要它們提供用於嵌入的完整* html *代碼,或只需提供URL的'trackId'? :) – ninetwozero

回答

0

也許一點點 「的hackish」,但你可以使用:

preg_match('/(src=".*")/', $sc_preview_embed, $match); 
$sc_preview = str_replace($match[0], rtrim($match[0],'"').'&buying=false&download=true"', $sc_preview_embed); 
echo $sc_preview; 

輸出:

<iframe width="100%" height="166" scrolling="no" frameborder="no" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/110090423&buying=false&download=true"></iframe> 
+0

謝謝大衛,這工作 – Osu

0

您可以使用preg_replace並匹配src =「(。+?)」(引號之間的所有內容)。並替換爲src =「$ 1YOUR-ADDITION-HERE」。 $ 1是您在第一部分中找到的匹配項。

0

「簡單」的方法是通過在字符串中間進行替換。

$sc_preview = str_replace('player/?url=','player/?buying=false&download=true&url=', $sc_preview_embed); 

「正確」的方式,可能是從嵌入中提取URL,然後使用PHP's parse_url操縱查詢字符串,然後嵌入內更換。

這應該確保它不會弄亂任何東西。

但是,您可能需要考慮要求用戶不要粘貼嵌入代碼,只需粘貼URL。這樣你就可以按照你想要的方式構建嵌入。

+0

嗨特倫斯,感謝你 - 你能給我一個例子,說明如何從URL中構建嵌入代碼嗎?我找不到使用SoundCloud直接鏈接的在線示例,如下所示:https://soundcloud.com/instrumentalbgm/power-on-through-instrumental – Osu

+0

啊,我只是假設網址很簡單。你可以使用SoundCloud API查看它們http://developers.soundcloud.com/docs#resolving –