PHP строка для хранения и вывода другой переменной PHP - PullRequest
0 голосов
/ 30 августа 2018

В моем приложении PHP я показываю встроенные видео из различных источников - YouTube, Vimeo и т. Д.

В моей таблице статей я храню идентификатор моих видео для вставки:

Article.video_url = 'e5dkjwkdek'

Затем в своей таблице video_providers я сохраняю код для встраивания, но хочу динамически добавить video_url, поэтому я храню:

VideoProviders.embedcode = "https://www.youtube.com/embed/$article->video_url"

Затем я вывожу переменную 'embedcode' в своем шаблоне и хочу добавить $ article-> video_url, который является уникальным идентификатором видео.

Кажется, мне нужна переменная внутри переменной, я попытался:

VideoProviders.embedcode = "https://www.youtube.com/embed/{$article->video_url}"

и

VideoProviders.embedcode = "https://www.youtube.com/embed/$$article->video_url"

Но, похоже, они просто рассматриваются как буквальные строки. Если у кого-то есть лучшие предложения относительно того, как этого добиться, я весь в ушах. Короче говоря, я хочу, чтобы разметка хранилась в одном месте, чтобы ее можно было редактировать в случае изменения кода встраивания провайдера.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Нельзя хранить строки с символами интерполяции 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. Сохраните URL с местозаполнителями для видео id и (опять-таки, предположим, 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');
    
0 голосов
/ 30 августа 2018

Я думаю, вы можете просто сделать это:

$video_id = 'e5dkjwkdek';
$provider_url = 'https://www.youtube.com/embed/';

$embed_code = $provider_url . $video_id;

Или что-то похожее на это. Вы можете заполнить video_id и provider_url так, как вам нравится. Из базы данных или из другого источника. Этот способ всегда должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...