[英]Change regex pattern matches with function return value
我有以下变量:
$text = 'This is a sentence [url=http://site.com] that contains urls [url=javascript:alert();]';
以及以下用于验证URL的代码行:
$text = preg_replace('/\[url=([^\\]]+)]/', filter_var('$1', FILTER_VALIDATE_URL), $text);
输出:
“这是一个包含URL的句子”
如何获得以下输出?
“这是一个包含URL的句子http://site.com ”
$text = 'This is a sentence [url=http://site.com] that contains urls [url=javascript:alert();]';
$text = preg_replace_callback(
'/\[url=([^\\]]+)]/',
function ($url) {
$clean = filter_var($url[1], FILTER_VALIDATE_URL);
if ($clean) {
return '<a href="' . $clean . '">' . $clean . '</a>';
} else {
return "";
}
},
$text
);
<?php
$text = 'This is a sentence [url=http://site.com] that contains urls [url=javascript:alert();]';
function url($url){
if(filter_var($url, FILTER_VALIDATE_URL))
return $url;
return '';
}
$text = preg_replace('/\[url=([^\\]]+)]/e', 'url("$1")', $text);
echo $text;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.