PHP字符串包含并输出另一个PHP变量

时间:2018-08-29 23:40:52

标签: php variables

在我的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”

但是似乎这些只是被当作文字字符串。如果有人对如何实现这一目标有更好的建议,我将不胜感激。简而言之,我希望将标记存储在一个位置,以便在提供者的嵌入代码发生更改时可以对其进行编辑。

2 个答案:

答案 0 :(得分:2)

您不能使用PHP插值符号存储字符串。双引号字符串在运行时内插。

我想你有三个选择...

  1. 将各个部分存储在数据库中,并在查询中构造它们。例如(假设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/'

  2. 使用视频 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的末尾,这将是首选的解决方案。

  3. 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。从数据库或其他来源。这种方法应该总是有效。