<?php
// I have a string, something like this:
$string = '
Lorep ipsum <a href="http://www.example.com">example</a> lorem ipsum
lorem ipsum http://www.example.com/index.php?param1=val¶m2=val lorem ipsum
';
// I need to do some magick with preg_replace and get string like this:
$string = '
Lorep ipsum <a href="http://www.example.com" target="_blank">example</a> lorem ipsum
lorem ipsum <a href="http://www.example.com/index.php?param1=val¶m2=val" target="_blank">http://www.example.com/index.php?param1=val¶m2=val</a> lorem ipsum
';
?>
基本上,我想要链接未包含在&lt; a&gt;&lt; / a&gt;中的文字中的网址。并将target =“_ blank”添加到那些。
任何人都可以帮我吗?
答案 0 :(得分:2)
$string = preg_replace("/<a(.*?)>/", "<a$1 target=\"_blank\">", $string);
这将添加一个已设置的额外target=\"_blank\"
。
$string = preg_replace("/<a (href=".*?").*?>/", "<a $1 target="_blank">", $string);
这将确保在网址中只添加一个target="_blank"
答案 1 :(得分:1)
这将添加目标:
$string = preg_replace("/<a(.*?)>/", "<a$1 target=\"_blank\">", $string);
这是检测网址并将其转换为链接的粗略方式(这很脆弱):
$string = preg_replace("/(http[^\ ]+)/", "<a href=\"$1\" target=\"_blank\">$1</a>", $string);
答案 2 :(得分:0)
答案 3 :(得分:0)
$result = preg_replace(
"/(?<![\>https?:\/\/|href=\"'])(?<http>(https?:[\/][\/]|www\.)([a-z]|[A-Z]|[0-9]|[\/.&?= ]|[~])*)/",
"<a href=\"$1\">$1</a>",
$string
);