2012-04-06 14 views
1

Nachdem ich die Frage unten gestellt und darüber nachgedacht habe, glaube ich, dass diese Regex alles ist, was ich brauche. Nicht sicher, wie es geht.Nicht sicher, wie man diese Regex macht

![anycharacter](anycharacter)-[anycharacter](anycharacter)

-Original Titel und nachrichten-

PHP Markdown Komparse - Nicht erlaubt Bilder

Im Moment habe ich nur CSS setzen Bilder in der Umgebung zu verstecken, wo Abschlags zulässig. Ich möchte es so machen, dass, wenn Markdown-Bild-Syntax verwendet wird, Bilder nicht angezeigt werden. Ich würde es tatsächlich vorziehen, wenn es nur in eine Verbindung umgewandelt wird, aber einfach zu verbieten wäre in Ordnung. Ich denke, ein Regex für ![text](imagelink) würde funktionieren, aber ich bin nicht genug genug in Regex, um es zu tun oder zu wissen, ob das die beste Option wäre oder nicht.

-editieren- gerade mache ich eine preg_replace von preg_replace('/!\[/', "[", $text);, aber ich denke immer noch nicht, dass das die beste Lösung ist, da es das entfernen wird! manchmal sogar aus einem anderen Grund! Ich glaube, ich muss nur wissen, wie ![anycharacter](anycharacter) zu tun ersetzen mit [anycharacter](anycharacter)

+0

Was ist Ihre Frage? Wie kodieren Sie Bilder? – worenga

+0

@mightyuhu Wissen Sie nicht, was PHP Markdown ist? Ich sagte genau, was ich wollte. – qitch

Antwort

2

Dies ist eigentlich nicht mein Code seiner von http://core.svn.wordpress.org/tags/1.5.1.3/wp-content/plugins/markdown.php, aber man könnte es benutzen, um Ihre Eingabe in Ihrem _DoImages_reference_callback Prepass ($ matches) und _DoImages_inline_callback ($ matches) Funktionen, Dies ist jedoch nur ein Kernpunkt.

$text = preg_replace_callback('{ 
    (    # wrap whole match in $1 
     !\[ 
     (.*?)  # alt text = $2 
     \] 

     [ ]?    # one optional space 
     (?:\n[ ]*)?  # one optional newline followed by spaces 

     \[ 
     (.*?)  # id = $3 
     \] 

    ) 
    }xs', 
    '_DoImages_reference_callback', $text); 

# 
# Next, handle inline images: ![alt text](url "optional title") 
# Don't forget: encode * and _ 

$text = preg_replace_callback("{ 
    (    # wrap whole match in $1 
     !\\[ 
     (.*?)  # alt text = $2 
     \\] 
     \\(   # literal paren 
     [ \\t]* 
     <?(\S+?)>? # src url = $3 
     [ \\t]* 
     (   # $4 
      (['\"]) # quote char = $5 
      (.*?)  # title = $6 
      \\5  # matching quote 
      [ \\t]* 
     )?   # title is optional 
     \\) 
    ) 
    }xs", 
    '_DoImages_inline_callback', $text);