【问题标题】:PHP exploding url from text, possible?PHP从文本中爆炸网址,可能吗?
【发布时间】:2016-05-15 23:24:01
【问题描述】:

我需要从这一行分解 youtube url:

[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]

有可能吗?我需要删除 [embed] 和 [/embed]。

【问题讨论】:

  • preg_replace("/\[\/?embed\]/","", $url)
  • 请务必养成accepting answers 的习惯,帮助您解决问题。您将获得积分,并鼓励其他人帮助您。

标签: php html url youtube explode


【解决方案1】:

preg_match 是你需要的。

<?php

$str = "[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]";
preg_match("/\[embed\](.*)\[\/embed\]/", $str, $matches);
echo $matches[1]; //https://www.youtube.com/watch?v=L3HQMbQAWRc

【讨论】:

    【解决方案2】:
    $string = '[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]';
    $string = str_replace(['[embed]', '[/embed]'], '', $string);
    

    str_replace

    【讨论】:

      【解决方案3】:

      为什么不使用 str_replace? :) 快速简单 http://php.net/manual/de/function.str-replace.php

      【讨论】:

      • 请不要在回答中提出澄清问题。
      【解决方案4】:

      为了更好地衡量,您还可以在正则表达式中使用正数 lookbehind's and lookahead's

      (?<=\[embed\])(.*)(?=\[\/embed\])
      

      你会这样使用它:

      $string = "[embed]https://www.youtube.com/watch?v=L3HQMbQAWRc[/embed]";
      $pattern = '/(?<=\[embed\])(.*)(?=\[\/embed\])/';
      preg_match($pattern, $string, $matches);
      echo $match[1];
      

      下面是正则表达式的解释:

      (?&lt;=\[embed\]) 是一个肯定的 Lookbehind - 匹配其他东西之后的东西。

      (.*) 是一个捕获组 - . 使用量词匹配任何字符(换行符除外):*,它提供了零次和无限次之间的匹配,尽可能多次。这是之前和之后的组之间的匹配。这您正在寻找的机器人。

      (?=\[\/embed\]) 是一个积极的前瞻 - 匹配它之前的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多