2016-03-21 4 views
0

ich diese haben bisher:Lassen Sie Links mit Preg-ersetzen

preg_replace("/[^a-zA-Z0-9\/!?\" \' :,.;><_ ]/", "", 
html_entity_decode($text, ENT_QUOTES)); 

Es funktioniert gut, wenn ich andere Zeichenfolge von Links ein Teil verwenden .Wie i <script></script> <iframe> <a href=""></a> http:// https:// akzeptieren Sie?

+0

Versuchen Sie, alle URLs zu ermöglichen? Was ist das Ziel hier? – timothymarois

+0

@Idealcastle Ja, ich möchte alle oben aufgeführten Tags und URLs für die Zwecke der Anzeige erlaubt. –

Antwort

0

Ich habe in der Vergangenheit viele Projekte mit RegEx gemacht, hier ein paar meiner Fragen.

Übereinstimmung "Jeder" Link auf einer Seite.

$links = preg_match_all('#(?:<a\s+.*?href=[\'"]([^\'"]+)[\'"]\s*?.*?>((?:\s*(?!<\s*\/\s*a\s*>).\s*)*)<\s*\/\s*a\s*>)#i',$html,$patterns); 

// $patterns[0] (array) will give you the full tag <a herf="" ...etc 
// $patterns[1] (array) will give you the urls 

Sie sollten print_r($patterns) sicher sein, was die tatsächliche Arrays aussehen und wie wollen Sie sie nutzen.

Um <script> Tags (das tatsächlich findet vollständige Javascript-Blöcke, die möglicherweise nicht genau das, was Sie Fragen), jedoch können Sie den Code einige ändern.

preg_match_all("#<\s*script[^>]*[^/]>(.*?)<\s*/\s*script\s*>#i",$html,$scripts); 

Passend Sie diese Funktion nutzen zu können (matches "jeder" iframe-Tag in HTML)

function html_iframe_tags($str) 
{ 
    $iframes = array(); 
    $iframeSearch = preg_match_all('#(?:<iframe[^>]*)(?:(?:/>)|(?:>.*?</\s*iframe>))#i', $str, $rawiframes); 
    if (count($rawiframes[0])<1) return false; 

    for ($i = 0; $i < count($rawiframes[0]); $i++) 
    { 
     $iframes[$i]['tag'] = $rawiframes[0][$i]; 

     preg_match_all('/src="([^"]*)"/i',$iframes[$i]['tag'], $iframesrc); 
     $iframes[$i]['src'] = (isset($iframesrc[1][0]) ? $iframesrc[1][0] : ''); 

     preg_match_all('/\swidth="([^"]*)"/i',$iframes[$i]['tag'], $iframewidth); 
     $iframes[$i]['width'] = (isset($iframewidth[1][0]) ? $iframewidth[1][0] : ''); 

     preg_match_all('/\sheight="([^"]*)"/i',$iframes[$i]['tag'], $iframeheight); 
     $iframes[$i]['height'] = (isset($iframeheight[1][0]) ? $iframeheight[1][0] : ''); 
    } 

    return $iframes; 
} 

Dann print_r() die Ergebnisse und sehen, wie das Array für Ihre genaue Nutzung sieht, diese Funktion bestimmt tatsächlich mehr als Ihre Verwendung wie Breite/Höhe usw. Aber auch die src von denen Sie suchen.

Hoffentlich kann dir dieses Zeug die Richtung für dein Projekt geben. Hier

ist eine Website, die einen Bezug hat Regex in html
http://www.the-art-of-web.com/php/parse-links/

Verwandte Themen