0

私は次の変数を持っています:

$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の文です」

4

2 に答える 2

2
$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を参照してください

于 2013-01-26T14:13:26.613 に答える
1
<?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;
于 2013-01-26T14:16:25.600 に答える