2016-05-09 34 views
0

我已經搜索並找不到我正在尋找的內容。從href中提取鏈接並將其放在括號內

這是它的通常是:

<p> 
    Hi how are you? Have you checked <a href="http://www.google.com">Google</a> or <a href="http://www.youtube.com">YouTube</a>? 
</p> 

但是我很想有,因爲我願意打印或PDF頁面上應用此如下:

<p> 
    Hi how are you? Have you checked <a href="http://www.google.com">Google</a> (<a href="http://www.google.com">http://www.google.com</a>) 
    or <a href="http://www.youtube.com">YouTube</a> (<a href="http://www.youtube.com">http://www.youtube.com</a>)? 
</p> 

現在,我明白應該有一些與正則表達式的工作,但我不知道如何使用它。文本將從變量$ content中獲取,其中包含文章,我想要的是$內容中的所有鏈接保持原樣,並且href的內容將作爲括號「()中的附加超鏈接」 「因此,假設有人閱讀超鏈接的印刷文章,他們將能夠看到實際的URL。

回答

0

這是一個方便的小功能,可能就足夠了。

<?php 

     /**@var string $strInput THE STRING TO BE FILTERED */ 
     function doubleUpOnURL($strInput){ 
      $arrAnchorSplit  = preg_split("#<\/a>#", $strInput); 
      $strOutput   = ""; 
      $anchorRegX   = '(<a\s*href=[\'\"])(.+)([\'\"]>)(.*)'; 
      foreach($arrAnchorSplit as $anchoredString){ 
       $strOutput  .= preg_replace("#" . $anchorRegX . "#si" , "$1$2$3$4</a> ($1$2$3$2</a>)", $anchoredString); 
      } 
      return $strOutput; 
     } 

     $strInput = '<p>Hi how are you? Have you checked <a href="http://www.google.com">Google</a> or <a href="http://www.youtube.com">YouTube</a>?</p>'; 

     echo(doubleUpOnURL($strInput)); 
     //OUTPUTS: 
     // Hi how are you? Have you checked Google (http://www.google.com) or YouTube (http://www.youtube.com)? 

我希望你覺得它有用......

+0

非常好,這很容易工作。謝謝。 – user3197354

2

使用僞元素添加href你的鏈接後,是這樣的:

a[href]:after 
{ 
    content: " (" attr(href) ") "; 
} 
+0

非常感謝你。有一種正則表達方式可以做到這一點,你知道嗎? – user3197354

+0

因爲它不會傷心地使用mPDF,因爲mPDF不支持這些僞元素。 – user3197354

+0

@斯圖爾特的解決方案非常理想(更快,更清潔),但就目前而言,您似乎需要一個正則表達式解決方案,因爲正如您所提到的,因爲與mPDF的兼容性問題。你也可以嘗試下面的正則表達式解決方案,看看它是否做到了你想要的。 – Poiz