我得到了以下代码,用相应的链接替换了URL:
$in = array
(
'/(?:^|\b)((((http|https|ftp):\/\/)|(www\.))([\w\.]+)([,:%#&\/?=\w+\.-]+))(?:\b|$)/is'
);
$out = array
(
"<a href=\"$1\" target=\"_blank\">$1</a>"
);
return preg_replace($in, $out, $url);
但是,我不希望SRC =“url”属性中的URL被转换为链接。
如何从此模式中排除属性中包含的URL?
更新 输入将是:
Bellow you can see http://www.yahoo.com bla bla
<iframe src="http://yahoo.com"></frame
需要解析第一个链接,而不是src =“”
中的URL答案 0 :(得分:0)
使用此php代码提取除src=""
<?php
$p = '/((<)(?(2).*?src=[^>]*>).*?)*?((?:(?:(?:http|https|ftp):\/\/)|(?:www\.))(?:[\w\.]+)(?:[,:%#&\/?=\w+\.-]+))/smi';
// multi-line input text
$str = 'Visit http://www.google.com bla bla <iframe src="http://apple.com">
</frame> Bellow you can see http://www.ibm.com bla bla';
preg_match_all($p, $str, $m);
var_dump( $m[3] );
?>
array(2) {
[0]=>
string(21) "http://www.google.com"
[1]=>
string(18) "http://www.ibm.com"
}
我认为最好通过使用以下正则表达式排除src=""
和<
中包含的所有链接,而不是为>
提取链接。
$p = '/((<)(?(2)[^>]*>)(?:.*?))*?((?:(?:http|https|ftp):\/\/|www\.).*?[,:%#&\/?=\w+\.-]+)/smi';