2016-05-09 7 views
0

Ich habe gesucht und konnte nicht finden, was ich suchte.Link von einem href extrahieren und in Klammern setzen

Dies ist, wie es normalerweise sein:

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

Aber was ich würde gerne haben, denn ich bin bereit, diese Seite auf Druck oder PDF anzuwenden ist folgende:

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

Jetzt verstehe ich, dass es etwas Arbeit mit Regex geben sollte, aber ich weiß nicht, wie man das benutzt. Der Text wird aus der Variablen $ content entnommen, die den Artikel enthält. Ich möchte, dass alle Links innerhalb von $ content unverändert bleiben und der Inhalt von href als zusätzlicher Hyperlink in Klammern steht. "() "So, hypothetisch, wenn jemand einen gedruckten Artikel liest, wo Hyperlinks sind, könnten sie die tatsächliche URL sehen.

Antwort

0

Hier ist eine handliche kleine Funktion, die ausreichen.

<?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)? 

Ich hoffe, Sie finden es hilfreich ...

+0

Ausgezeichnet, das hat sehr gut funktioniert. Vielen Dank. – user3197354

2

ein Pseudoelement Verwenden Sie die href nach dem Links, so etwas wie hinzufügen:

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

Ihnen sehr danken. Gibt es einen Regex-Weg, um das zu tun? – user3197354

+0

Weil es leider nicht mit mPDF funktioniert, weil mPDF diese Pseudoelemente nicht unterstützt. – user3197354

+0

@ Stuart Lösung ist ziemlich ideal (schneller und sauberer), aber so wie es aussieht, scheint es, als ob Sie eine Regex-Lösung wegen der Kompatibilitätsprobleme mit mPDF, wie Sie erwähnt haben. Sie können die Regex-Lösung auch unten versuchen und sehen, ob es tut, was Sie wollen. – Poiz

Verwandte Themen