【问题标题】:Using custom tags for dispplay image or video in php使用自定义标签在 php 中显示图像或视频
【发布时间】:2012-11-08 12:55:51
【问题描述】:

我在我的简单内容管理系统中添加了这样的按钮到我的表单中。我写文章等。所以我也想添加图片和视频。我想通过自定义标签添加它们

    function formatText (el,tagstart,tagend) { 

    if (el.setSelectionRange) {
    el.value = el.value.substring(0,el.selectionStart) + tagstart + el.value.substring(el.selectionStart,el.selectionEnd) + tagend + el.value.substring(el.selectionEnd,el.value.length)
    }
    else {
    var selectedText = document.selection.createRange().text;

    if (selectedText != "") { 
        var newText = tagstart + selectedText + tagend; 
        document.selection.createRange().text = newText; 
    } 

    }



} 


<form name="my_form"> 
<textarea name="my_textarea" id="mytext"></textarea><br /> 
<input type="button" value="IMAGE" onclick="formatText (document.getElementById('mytext'),'[IMAGE]','[/IMAGE]');" /> 

这是在我的文本区域中添加 [IMAGE] [/IMAGE] 标记,我想在提交表单后显示此标记之间的图像链接。同样,我想添加 [VIDEO] [/VIDEO] 标签,如果我在这些标签之间编写 youtube 链接,则在显示页面时显示视频。

我该怎么做?

【问题讨论】:

  • 要显示 youtube 视频,您必须插入 youtube 的自定义嵌入代码。见support.google.com/youtube/bin/…
  • 如何与自定义标签集成?
  • 我不明白你说的自定义标签是什么意思。
  • 如何将 [VIDEO]youtube.com?vvddee [/VIDEO] 自动识别为视频文件?请再次阅读我的问题
  • 所以您想在 html 中搜索 [VIDEO][/VIDEO] 并嵌入提到的 youtube 视频?

标签: php javascript html forms tags


【解决方案1】:

这段代码应该可以工作。更多解释请参见 cmets。

//The data for this variable would be read from a database, user input, etc.
$content = "Non augue, ultrices[VIDEO]www.youtube.com/?vvddee[/VIDEO] ut elementum natoque tempor placerat. Egestas, penatibus urna, dis risus habitasse. Rhoncus augue urna porta, enim cum risus eu tortor in, p[IMAGE]images/abcde.png[/IMAGE]lacerat rhoncus mus tortor? Nec, magnis, enim elementum non urna eros augue, ridiculus porta dapibus? Parturient, dictumst nunc vel turpis! Eu eros vel tempor cum in.";

//Replace custom video tag with youtube embed
preg_match_all('/\[VIDEO\](https?:\/\/)?(www.)?youtube.com(\/watch\?v=|\/?\?)?(\w*)\[\/VIDEO\]/im', $content, $matches, PREG_SET_ORDER);
foreach($matches as $match){
    $content = str_replace($match[0],'<iframe width="420" height="315" src="http://www.youtube.com/embed/'.$match[4].'" frameborder="0" allowfullscreen></iframe>',$content);
}

//Replace custom image tag with html image tag
preg_match_all('/\[IMAGE\](.*)\[\/IMAGE\]/im', $content, $matches, PREG_SET_ORDER);
foreach($matches as $match){
    $content = str_replace($match[0],'<img src="'.$match[1].'"></image>',$content);
}
echo $content;

希望这会有所帮助。

【讨论】:

  • 如何使用 php 函数来做到这一点?这在我的代码中不起作用,匹配会出错。
  • @Seyhan 终于开始测试我的代码并发现/修复了一堆错误。请参阅我更新的固定代码答案和演示。
  • 谢谢 jdwire,看起来很完美
  • 另外,我想了解如何定义 preg_match_all 以从 youtube.com/watch?v=yFM 链接中删除 http:// watch?v=
  • @Seyhan 尝试将正则表达式字符串更改为/\[VIDEO\](https?:\/\/)?(www.)?youtube.com(\/watch\?v=|\/?\?)?(\w*)\[\/VIDEO\]/im,看看是否可行。
【解决方案2】:

编辑:OP 最终澄清需要 PHP 代码答案(请参阅我的其他答案)。留在这里以防其他人需要 JS 解决方案。

很难测试这段代码(jsfiddle 不适合我),但我认为这应该可以:

对于 youtube 视频:

var el = document.getElementById('<your element id>');
while(true){
    var match = '/\[VIDEO\](https?:\/\/)?(www.)?youtube.com(\/watch\?v=|\/?\?)?(\w*)\[\/VIDEO\]/im.exec(el.innerHTML);
    if(match==null)break;
    el.innerHTML=el.innerHTML.replace(match[0],'<iframe width="420" height="315" src="http://www.youtube.com/embed/'+match[1]+'" frameborder="0" allowfullscreen></iframe>');
}​

您希望对图像执行类似的操作。请注意,如果您对元素中的任何元素有任何引用,它们将被破坏。希望这会有所帮助。

【讨论】:

  • 我将对此进行测试,所以如果我可以将 html 代码包含到代码中,那么它可能适用于图像
  • 对,要使其适用于图像,您只需将图像特定的代码替换为视频特定的代码。如果您让我知道视频代码是否有效,我可以尝试编辑我的答案以包含图像代码。
  • 元素id是什么?以及如何将此代码添加到查看内容页面中?这是一个函数吗?
  • 您的自定义标签将包含在什么元素中?全身任何部位?如果是,则将document.getElementById('&lt;your element id&gt;'); 更改为document.body
  • 您是要在服务器上运行代码还是在客户端上运行代码?
猜你喜欢
  • 2017-11-09
  • 1970-01-01
  • 2014-11-17
  • 2015-11-02
  • 1970-01-01
  • 2017-01-24
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多