将_blank添加到所有外部链接

Cit*_* SP 2 php uri str-replace

可能重复:
抓取A元素的href属性
解析包含"href"标记中特定单词的所有链接

我正在使用以下函数将_blank添加到我网站上的所有链接.

function targetBlank($text) {
  $return = str_replace('<a', '<a target="_blank"', $text);
  return $return;
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种解决方案,只在外部链接(不在我的域上)而不是所有链接上应用此功能.

Jef*_*ert 5

这是一个依赖于以下方面的尝试解决方案$_SERVER['HTTP_HOST']:

function targetBlank($text) {
  if( strpos( $text, $_SERVER['HTTP_HOST'] ) === false )
      return str_replace('<a', '<a target="_blank"', $text);
  return $text;
}
Run Code Online (Sandbox Code Playgroud)

未经测试,但它应该工作.@meager也是正确的,因为如果该标签已经定义了目标,这将产生格式错误的锚标签,但是,因为它只对您传入的html字符串进行操作,然后<abbr>依此类推,只要您通过它就应该是安全的带有锚标签的字符串.