Leser: 18
1
2
3
4
5
6
7
8
9
10
11
12
13
# Test
<http://example.org>
**Das ist <strong>**
<a>
// Test für Code
int test;
int teta (int z) {
return z*2;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<<h1>Test</h1>
<p><a href="http://example.org">http://example.org</a></p>
<p><strong>Das ist <strong></strong></p>
<p><a></p>
<pre><code>// Test für Code
int test;
int teta (int z) {
return z*2;
}
</code></pre>
2010-12-18T19:00:31 GwenDragonEs ist eben ein Drama, wenn Leuten einfach zu schreibendes Markup geboten werden soll. :(
Nutzer verwenden in einer Anwendung Text::Markdown mit Markdown-Syntax.
Markdown verbietet aber kein HTML, deswegen führt so manches zu einem nichtwohlgeformten HTML.
Wie kann ich das nun das im Markdown-Code eingesetzte HTML auf Probleme prüfen oder sowas vermeiden?
Oder weiß jemand anderes Pseudomarkup außer BBCode oder Textile zur Abhilfe?
QuoteAber bei ähnlichen Aufgabenstellungen/Problemen habe ich mir angewöhnt den ganzen HTML-Input in HTML::TreeBuilder einzulesen und wieder auszugeben. Dann kommt (fast immer) gültiges HTML raus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#!/usr/bin/perl use strict; use warnings; use Text::Markdown 'markdown'; use HTML::TreeBuilder; my @a = <DATA>; my $html; $html = markdown("@a"); print "=========\n", $html; my $tree = HTML::TreeBuilder->new; $tree->parse($html); my ($b) = $tree->look_down( '_tag', 'body' ); my @body = $b->content_list; # Kindknoten print "=========\n"; print $_->as_XML for @body; $tree->delete; # clear memory! __DATA__ # Test <a href="a"> <?asd> </?> <cde> <script> <http://as> <ftp://www.test.de> <http://example.org> _Das_ ist das *lalala* [_t_](/)! **Das ist <strong>** <a> // Test für Code int test; int teta (int z) { return z*2; }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
=========
<h1>Test</h1>
<p><a href="a"></p>
<?asd>
</?>
<p><cde></p>
<pre><code><script>
</code></pre>
<p><a href="http://as">http://as</a></p>
<p><a href="ftp://www.test.de">ftp://www.test.de</a></p>
<p><a href="http://example.org">http://example.org</a></p>
<p><em>Das</em> ist das <em>lalala</em> <a href="/"><em>t</em></a>!</p>
<p><strong>Das ist <strong></strong></p>
<p><a></p>
<pre><code> // Test f³r Code
int test;
int teta (int z) {
return z*2;
}
</code></pre>
=========
<h1>Test</h1>
<p><a href="a"></a></p>
<p></p>
<pre><code><script>
</code></pre>
<p><a href="http://as">http://as</a></p>
<p><a href="ftp://www.test.de">ftp://www.test.de</a></p>
<p><a href="http://example.org">http://example.org</a></p>
<p><em>Das</em> ist das <em>lalala</em> <a href="/"><em>t</em></a>!</p>
<p><strong>Das ist <strong></strong></strong></p>
<p><a></a></p>
<pre><code> // Test f³r Code
int test;
int teta (int z) {
return z*2;
}
</code></pre>