在我的PHP应用程序中,我正在显示来自各种来源的嵌入式视频-youtube,vimeo等。
在我的文章表中,我存储了嵌入视频的ID:
Article.video_url = 'e5dkjwkdek'
然后在我的video_providers表中存储嵌入代码,但是我想动态添加video_url,所以我存储:
VideoProviders.embedcode = "https://www.youtube.com/embed/$article->video_url"
然后我在模板中输出'embedcode'变量,并想要附加$ article-> video_url,这是视频的唯一ID。
我尝试过在变量中似乎需要一个变量
VideoProviders.embedcode = "https://www.youtube.com/embed/{$article->video_url}"
和
VideoProviders.embedcode =“ https://www.youtube.com/embed/ $$ article-> video_url”
但是似乎这些只是被当作文字字符串。如果有人对如何实现这一目标有更好的建议,我将不胜感激。简而言之,我希望将标记存储在一个位置,以便在提供者的嵌入代码发生更改时可以对其进行编辑。
答案 0 :(得分:2)
您不能使用PHP插值符号存储字符串。双引号字符串在运行时内插。
我想你有三个选择...
将各个部分存储在数据库中,并在查询中构造它们。例如(假设MySQL)
SELECT
CONCAT(VideoProviders.embed_prefix, Article.video_url) AS embedcode,
-- etc
其中VideoProviders.embed_prefix
包含'https://www.youtube.com/embed/'
,'https://player.vimeo.com/video/'
等
使用视频 id 的占位符存储URL,并且(再次假设为MySQL)使用REPLACE
函数。例如
VideoProviders.embedcode = 'https://www.youtube.com/embed/{VIDEO_ID}'
和
SELECT
REPLACE(VideoProviders.embedcode, '{VIDEO_ID}', Article.video_url) AS embedcode,
-- etc
如果视频 id 并不总是出现在URL的末尾,这将是首选的解决方案。
在printf
中存储embedcode
样式模式,例如'https://www.youtube.com/embed/%s'
,然后将其与PHP一起放置,例如
$embedcode = sprintf($row['embedcode'], $row['video_url');
答案 1 :(得分:0)
我认为您可以这样做:
$video_id = 'e5dkjwkdek';
$provider_url = 'https://www.youtube.com/embed/';
$embed_code = $provider_url . $video_id;
或类似的东西。您可以随时填写video_id和provider_url。从数据库或其他来源。这种方法应该总是有效。