小于和大于不输出PHP之间的文本

时间:2015-10-25 17:40:12

标签: php

我使用(str_replace)函数用这个正则表达式替换youtube url中的## ID ##:(?P<id>[a-z-A-Z_0-9]+) 所以我使用这段代码来做到这一点:

<?php
  $urlbase = 'https://www.youtube.com/watch?v=##ID##';
  $lastchange = str_replace('##ID##', '(<id>[a-z-A-Z_0-9]+)', $urlbase);
  echo $lastchange;
?>

我在浏览器中得到如下输出:https://www.youtube.com/watch?v=(?P[a-z-A-Z_0-9]+),它看起来像<id>没有出现!

我尝试这个简单的代码:

<?php
 echo "This is my <id>";
?>

但我只是在浏览器中获得了this is my

有什么问题?以及我如何解决它,谢谢

3 个答案:

答案 0 :(得分:0)

被解释为HTML,因此您的浏览器正在解析它,因为它不是可渲染元素,所以它什么也没有显示。尝试:

<?php
  echo "This is my &lt;id&gt;
?>

对于str_replace,它正在完成该函数应该做的事情。如果您希望在字符串替换中使用正则表达式,请使用preg_replace

答案 1 :(得分:0)

问题在于:

$lastchange = str_replace('##ID##', '(<id>[a-z-A-Z_0-9]+)', $urlbase);

str_replace不使用正则表达式。

您需要preg_replace

$pattern = '(<id>[a-z-A-Z_0-9]+)'
$replacement = '##ID##'
$string = $urlbase
$lastchange = preg_replace($pattern, $replacement, $string);

同样<>html entities,这意味着它们是HTML的保留字符,如果您想要显示它们,则它们具有一些特殊含义,那么您必须使用实体名称,例如{{在你的情况下分别为1}}和&lt;

&gt;

答案 2 :(得分:0)

标记&lt; id&gt;正在被您的浏览器删除。如果您观看源代码,它确实存在。也许你应该尝试:

  $urlbase = 'https://www.youtube.com/watch?v=##ID##';
  $lastchange = str_replace('##ID##', '(<id>[a-z-A-Z_0-9]+)', $urlbase);
  echo urlencode( $lastchange );