只截断像twitter这样的网址

时间:2014-03-26 09:41:03

标签: php html regex twitter

大家好我只需要截断网址,如果内容比Twitter的内容更长。如果我发帖,

“嗨http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html这个”。

这个内容到Twitter会是这样的,

“嗨...... fatthelongestdomainnameatlonglast.com/wearejustdoing ......这个”

所以对我来说,我的内容链接中的问题是锚标记。当我试图使用正则表达式检查链接并替换'href'值时。提前谢谢。

3 个答案:

答案 0 :(得分:1)

我希望这会对你有所帮助。 demo这里

<强> HTML

<a href="http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html">http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html</a>
<br>
    <a href="http://www.Hello.com/page/error/view/user/1253" >http://www.Hello.com/page/error/view/user/1253</a>

<强> Jquery的

$(document).ready(function(){

$("a").each(function(){
    //var href=$(this).attr("href");
    var text=$(this).text();
    var parts=text.split("/");
    $(this).text(parts[2] +"/"+ parts[3].substr(0,20));
});

});

答案 1 :(得分:1)

对于php

<?php
$string="<a href='http://www.thelongestliast.com/wearejustdoingthistobdoitanyways.html'>
http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html</a>
<br>
<a href='http://www.Hello.com/page/error/view/user/1253' >http://www.Hello.com/page/error/view/user/1253</a>";

$dom = new DOMDocument;
$dom->loadHTML($string);
foreach ($dom->getElementsByTagName('a') as $node) {
    $original_url = $node->getAttribute('href');
    $text = explode("/", $original_url);

    echo $var= "<a href='".$original_url."'>".$text[2]."/".$text[3]."</a><br>";


}

?>

答案 2 :(得分:0)

我自己在这里找到了解决方案,

$stringtest = 'sdsds <a href="http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html">http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html</a>
<a href="http://www.yahoo.com">Yahoo</a> ddfdf';
$regexp= "/\<a.*href=\"(.*?)\".*?\>(.*)\<\/a\>+/";
$text = preg_replace_callback($regexp,
        function($matches) {
        if(strlen($matches[2])>57){
            $returnV="<a target='_blank' href='".$matches[1]."'>".substr($matches[2],0,57).'...'."</a>";
        } else {
         $returnV="<a target='_blank' href='".$matches[1]."'>".substr($matches[2],0,57)."</a>";
        }
            return $returnV;
        },
        $stringtest
        );
print $text;