如何将所有#标签转换为超链接?

时间:2011-05-23 15:17:45

标签: php

如果此脚本检测到然后显示所有#标签,我该如何更改它以使它们都成为超链接?基本上将<a href="#">置于其前面并</a>置于

之后
$str = <<<STR
this is a string
with a #tag and
another #hello one
STR;

$matches = array();
if (preg_match_all('/#([^\s]+)/', $str, $matches)) {
  var_dump($matches[1]);
}

3 个答案:

答案 0 :(得分:2)

听起来你想要这样做:

$str = <<<STR
this is a string
with a #tag and
another #hello one
STR;

$matches = array();
if (preg_match_all('/#([^\s]+)/', $str, $matches)) {
  // Get rid of the full matches
  array_shift($matches);
  // Now get the first array element which are the actual captured matches
  list($matches) = $matches;

  foreach($matches as $match) {
    echo "<a href='#'>{$match}</a>\n";
  }
}

输出:

$ php test.php 
<a href='#'>tag</a>
<a href='#'>hello</a>

答案 1 :(得分:1)

您可以使用反向引用,preg_replace执行此操作。

echo preg_replace('/#([^\s]+)/', '<a href="#">$1</a>', $str);

输出:

this is a string
with a <a href="#">tag</a> and
another <a href="#">hello</a> one

如果您希望#成为链接的一部分,只需将正则表达式更改为/(#[^\s]+)/

演示:http://ideone.com/T06HQ

答案 2 :(得分:-3)

sed 's/#/URL/' myhtmlfile.html

其中,URL是您要替换#with。

的网址