繁体   English   中英

更改正则表达式模式与函数返回值的匹配

[英]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
);

参见http://codepad.viper-7.com/Hwgq90

<?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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM