2014-03-26 37 views
1

大家好,我只需要截断只有从像Twitter如何做内容更长的URL。如果我发帖,截断只有像推特的url

“hi http://www.thelongestlistofthelongeststuffatthelongestdomainnameatlonglast.com/wearejustdoingthistobestupidnowsincethiscangoonforeverandeverandeverbutitstilllookskindaneatinthebrowsereventhoughitsabigwasteoftimeandenergyandhasnorealpointbutwehadtodoitanyways.html this”。

此内容叽叽喳喳它会像这样,

“喜... fatthelongestdomainnameatlonglast.com/wearejustdoing ...这个”所以

对我有什么问题在我的内容链接的锚标记会。当我试图使用正则表达式来检查链接并且还替换'href'值。提前致谢。

+0

如果您使用的是正则表达式,那么您正在破坏自己。你不应该知道它包含什么,只是它包含超过一定长度的链接。如果是这种情况,并且内容是链接本身,请缩短标签的内容。 – Neil

+0

@Neil内容也可能有一些文字,也有不止一个链接。 – Pramod

回答

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; 
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)); 
}); 

}); 
+0

在JavaScript中这很好。但我需要它在PHP中。无论如何感谢您的努力。 – Pramod

+0

现在你改变标签的家伙。在此之前在Javascript中。好吧,不要给PHP也 –

+0

对此抱歉。那次我给了错误的标签。 – Pramod

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>"; 


} 

?> 
+0

谢谢。无论如何,我自己没有使用domdocument得到了一些解决方案。 – Pramod