recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment remplacer une URL de chaîne par une balise en php, veuillez l'améliorer

    $url = "软件下载网址:http://www.abc.com/vip/xz/ 【视频教程:www.abc.com/vip/  】  地址:baidu.com 地址:www2.baidu.com 售后QQ群:544654";

    $result = rep_url($url);

    /**
     * 将字符串的url转化成可以点击的
     * @date   2017-06-10T21:00:55+0800
     */
    function rep_url($str){
        $result = preg_match('/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i',$str,$data);
        if (is_array($data) == true && $result > 0) {
            foreach ($data as $key => $value) {
                $str = str_replace($value,"<a style='text-decoration: none;outline: none;color: #FF5722;' target='_blank' href='$value'>$value</a>",$str);
            }
            // "<a style='text-decoration: none;outline: none;color: #FF5722;' target='_blank' href='rrreee'>rrreee</a>"
        }
        return $str;
    }

Le résultat de l'exécution est le suivant (seul le premier est remplacé) :

Comment puis-je remplacer d'autres types d'URL ? Je ne suis vraiment pas familier avec cela, j'espère donc que vous pourrez me donner quelques conseils.

给我你的怀抱给我你的怀抱2725 Il y a quelques jours704

répondre à tous(1)je répondrai

  • typecho

    typecho2017-06-12 09:23:47

    <?php
    
    $re = '/(http|https|ftp)?(?::\/\/)?(?:\w+)(?=\.)(?:[\w\.]+)(?:[\w&?+=\/]+)?/';
    $str = '软件下载网址:http://www.abc.com/vip/xz/ 【视频教程:http://pan.baidu.com/share/link?shareid=143406171&uk=746154028  】  地址:baidu.com/?a=55&b=33 地址:www2.baidu.com 售后QQ群:544654';
    
    $output = preg_replace_callback($re, function($matches) {
        if (!empty($matches[1]) and in_array($matches[1], ['http', 'https', 'ftp'])) {
            return sprintf('<a href="%s">%s</a>', $matches[0], $matches[0]);
        } else {
            return sprintf('<a href="%s%s">%s</a>', 'http://', $matches[0], $matches[0]);
        }
    }, $str);
    
    print $output;

    sortie :

    软件下载网址:<a href="http://www.abc.com/vip/xz/">http://www.abc.com/vip/xz/</a> 【视频教程:<a href="http://pan.baidu.com/share/link?shareid=143406171&uk=746154028">http://pan.baidu.com/share/link?shareid=143406171&uk=746154028</a>  】  地址:<a href="http://baidu.com/?a=55&b=33">baidu.com/?a=55&b=33</a> 地址:<a href="http://www2.baidu.com">www2.baidu.com</a> 售后QQ群:544654

    Je viens de donner une conférence sur les expressions régulières aujourd'hui, le replay est sorti, bienvenue pour regarder...
    /l/15...

    répondre
    0
  • Annulerrépondre