如何使用PHP在文本块中查找,链接和缩短URL文本

So I currently have this...

<?php

$textblockwithformatedlinkstoecho = preg_replace('!(((f|ht)tp(s)?://)[-a-zA-
Zа-яА-Я()0-9@:%_+.~#?&;//=]+)!i', '<a href="$1" target="popup">$1</a>', 
$origtextwithlinks);

echo $textblockwithformatedlinkstoecho;
?>

But, I would like to also shorten the clickable link to around 15 chars in length...

Example input text

I recommend you visit http://www.example.com/folder1/folder2/page3.html?
longtext=ugsdfhsglshghsdghlsg8ysd87t8sdts8dtsdtygs9ysd908yfsd0fyu for more 
information.

Required output text

I recommend you visit example.com/fol... for more information.

You can use preg_replace_callback() to manipulate the matches.

Example:

$text = "I recommend you visit http://www.example.com/folder1/folder2/page3.html?longtext=ugsdfhsglshghsdghlsg8ys\d87t8sdts8\dtsdtygs9ysd908yfsd0fyu for more information.";

$fixed = preg_replace_callback(
    '!(((f|ht)tp(s)?://)[-a-zA-Zа-яА-Я()0-9@:%_+.~#?&;//=]+)!i', 
    function($matches) {
        // Get the fully matched url
        $url  = $matches[0];

        // Do some magic for the link text, like only show the first 15 characters
        $text = strlen($url) > 15
            ? substr($url, 0, 15) . '...'
            : $url;

        // Return the new html link
        return '<a href="' . $url . '" target="popup">' . $text . '</a>';
    }, 
    $text
);

echo $fixed;

You probably need to modify your regex though, since it doesn't match the \-characters you have in the query string in the url.