【问题标题】:How can I remove a spcific html meta tag with php?如何使用 php 删除特定的 html 元标记?
【发布时间】:2016-07-19 18:30:10
【问题描述】:

我想这样做:
如果 php 在 html 源代码中找到这个特定的元标记,则从标题中删除:

<meta property="og:video:type" content="application/x-shockwave-flash" /> <meta property="og:video" content="https://www.neocsatblog.info/jwplayer/player.swf?file=&autostart=true&skinName=newtube&skinURL=https%3A%2F%2Fneocsatblog.info%2Fskinning-sdk%2Ffive%2Fnewtube%2Fnewtube.xml" />

我尝试过这种方法,但不起作用:

if ( $fullmeta == '<meta property="og:video:type" content="application/x-shockwave-flash" /> <meta property="og:video" content="https://www.neocsatblog.info/jwplayer/player.swf?file=&autostart=true&skinName=newtube&skinURL=https%3A%2F%2Fneocsatblog.info%2Fskinning-sdk%2Ffive%2Fnewtube%2Fnewtube.xml" />') {
     $fullmeta="";  
   }

声明完整元数据的完整代码块:

<? 
 $video_url = get_field('video_urlasd');
if (isset($video_url) && $video_url !== "https://") {
  $meta1='<meta property="og:video:type" content="application/x-shockwave-flash" />';
  $skinURL="https://neocsatblog.info/skinning-sdk/five/newtube/newtube.xml";
  $meta2=' <meta property="og:video" content="https://www.neocsatblog.info/jwplayer/player.swf?file='.urlencode($video_url).'&autostart=true&skinName=newtube&skinURL='.urlencode($skinURL).'" />';
  $fullmeta=$meta1.$meta2;
  echo $fullmeta;
  }else{
      echo chop($fullmeta,"asd");
  }
   if ( $fullmeta == '<meta property="og:video:type" content="application/x-shockwave-flash" /> <meta property="og:video" content="https://www.neocsatblog.info/jwplayer/player.swf?file=&autostart=true&skinName=newtube&skinURL=https%3A%2F%2Fneocsatblog.info%2Fskinning-sdk%2Ffive%2Fnewtube%2Fnewtube.xml" />') {
     echo $fullmeta="";  
   }
  ?>

我不知道为什么,因为在 HTML 源代码上我找到了它,看起来和我复制的一样!

【问题讨论】:

  • 你在哪里设置$fullmeta?你能告诉我们那个代码吗?
  • 是的,好吧,我补充一下问题
  • 完成,我添加到问题中
  • 删除 2 个元标记中的空格。或 $fullmeta = $meta1。 '.$meta2;
  • 请记住,通过回显 $fullmeta = "";实际上不会设置您的元标记。

标签: php html remove-if


【解决方案1】:

替换这部分代码

if (isset($video_url) && $video_url !== "https://") {

有了这个

if (!empty($video_url) && $video_url !== "https://") {

【讨论】:

  • 问题出在这两种解决方案上:当我们有视频时,这种方法也会删除 og 视频标签。如您所见,我在完整代码块中使用变量作为文件 url。我只想在文件部分为空时删除此元标记(?file='');
  • @SzántaiÁdám 你是对的——我的错。我已经更改了解决方案,只为那个提供了 DOM 对象。
  • 如果我对这种方法理解正确,我们需要源代码中的每个 html 标记,对吗?
  • 是的,您必须提供一个 HTML 源代码,其中包含您要删除的标签。您可以在 PHP 中创建它或使用 file_get_contents 函数或通过 ajax 等发送它时获取它。您想要使用的任何方法都需要提供一个带有 HTML 的字符串,其中包含该标签作为此解决方案的输入。
  • 提供完整的HTML源代码有问题吗?例如,您是否需要仅获取 head 部分并使用它?
【解决方案2】:

您可以为此使用 str_replace。

$fullmeta = '<meta property="og:video:type" content="application/x-shockwave-flash" /> <meta property="og:video" content="https://www.neocsatblog.info/jwplayer/player.swf?file=&autostart=true&skinName=newtube&skinURL=https%3A%2F%2Fneocsatblog.info%2Fskinning-sdk%2Ffive%2Fnewtube%2Fnewtube.xml" />';
$html_without_crap =  str_replace($fullmeta,"",$Where_it_needs_to_look);

PHP 文档:http://php.net/manual/en/function.str-replace.php

【讨论】:

  • 我尝试过这种方式,但不起作用:$html_without_crap = str_replace($fullmeta,"",'&lt;meta property="og:video:type" content="application/x-shockwave-flash" /&gt; &lt;meta property="og:video" content="https://www.neocsatblog.info/jwplayer/player.swf?file=&amp;autostart=true&amp;skinName=newtube&amp;skinURL=https%3A%2F%2Fneocsatblog.info%2Fskinning-sdk%2Ffive%2Fnewtube%2Fnewtube.xml" /&gt;');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
相关资源
最近更新 更多