"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Bekijk deze output eens:
1
2
3
4
5
| $content = 'Hele hoop tekst <pre class="php">dattes</pre>. Nog meer tekst <pre><p>HTML uitleg</p></pre>'; preg_match_all("/<pre[^>]*>(.*?)<\/pre>/", $content, $matches); print_r($matches[1]); |
Intentionally left blank
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
[^>] betekent 'elk karakter behalve >'Osiris schreef op dinsdag 04 oktober 2005 @ 23:13:
Hm, crisp, volgens de PHP manual staat de '^' voor 'negate the class, but only if the first character', alleen Joost mag weten wat dat betekend?
[>^] betekent 'ofwel >, ofwel ^'
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Aha, thnx, gekke vage zin met 'negate' enzo, komt niet in mijn idioom voor-NMe- schreef op dinsdag 04 oktober 2005 @ 23:16:
[...]
[^>] betekent 'elk karakter behalve >'
[>^] betekent 'ofwel >, ofwel ^'
Dat klopt toch ook, er staat nu dat het alles mag zijn behalve een '>' (die volgt daarna namelijk nog).Osiris schreef op dinsdag 04 oktober 2005 @ 23:13:
Hm, crisp, volgens de PHP manual staat de '^' voor 'negate the class, but only if the first character', alleen Joost mag weten wat dat betekend?
edit: hmmm misschien iets eerder moeten refreshen
[ Voor 12% gewijzigd door Borizz op 04-10-2005 23:23 ]
If I can't fix it, it ain't broken.
Dat was een typvoud-NMe- schreef op dinsdag 04 oktober 2005 @ 23:15:
Als je op <pre>-tags wil matchen, waarom verzin je dan /<p(.*?)>(.*?)<\/pre>/ als regexp? Waarom p en niet pre?
Daar moet ik nog wat aan doen.Let je trouwens wel even op dat deze regexp case sensitive is, en die van crisp ook?
De bedoeling is dat als iemand in mijn CMS tussen <pre >- tags html zet, deze html niet geparsed wordt. Hiertoe heb ik nu het volgende:
1
2
3
4
5
6
7
8
| $content = 'Hele hoop tekst <pre class="php">dattes</pre>. Nog meer tekst <pre><p>HTML uitleg</p></pre>'; preg_match_all("/<pre[^>]*>(.*?)<\/pre>/", $content, $matches); foreach ($matches[1] as $pre) { echo htmlentities($pre); } |
Nu heb ik weliswaar de < pre> delen gematched, en alles daarbinnen vervangen door html entities, maar hoe krijg ik dit nu op de goede plaats in $content terug? Volgens mij bewandel ik een verkeerde weg...
[ Voor 78% gewijzigd door Reveller op 04-10-2005 23:32 ]
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
1
2
3
4
5
6
7
8
9
10
11
| $content = 'Hele hoop tekst <pre class="php">dattes</pre>. Nog meer tekst <pre><p>HTML uitleg</p></pre>'; $content = preg_replace_callback('/(<pre[^>]*>)(.*?)(<\/pre>)/i', 'tag_pre', $content); echo $content; function tag_pre($matches) { return $matches[1] . htmlspecialchars($matches[2]) . $matches[3]; } |
maar stackbased is meer fail-safe en biedt meer mogelijkheden.
Intentionally left blank
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| $content = "<pre> switch ($status) { case MENU_NOT_FOUND: not_found('<b>Pagina niet gevonden</b>'); break; case MENU_ACCESS_DENIED: access_denied('<b>Geen toegang</b>'); break; } </pre>"; $content = preg_replace_callback('/(<pre[^>]*>)(.*?)(<\/pre>)/i', 'tag_pre', $content); echo $content; function tag_pre($matches) { return $matches[1] . htmlspecialchars($matches[2]) . $matches[3]; } |
Een vraag van algemene aard: wat is eigenlijk het voordeel van een UBB parser boven het direct intikken van HTML? Zoveel eenvoudiger is het toch niet uit te leggen dat een link [ url=http://www.link.com] zo gemaakt moet worden[/url] dan < a href="www.link.com">zo</a>? Het enige voordeel zie ik bij constructies als [image=43], in plaats van een complete image tag te moeten tikken. En later zou je altijd nog eens de image tag-constructie zelf kunnen aanpassen, en alle UBB [image] tags veranderen dan gewoon mee. Is dat meteen ook de hoofdreden of zijn er meer argumenten te geven voor het maken van een UBB (ook binnen een CMS?) in plaats van het direct laten intikken van HTML?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Intentionally left blank
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function tag_pre($matches) { $source = explode("\n", trim($matches[2])); $count = sizeof($source); for($i = 1; $i <= $count; $i++) { if ($source[$i] == '') { $output.= "\n"; } else { $output.= "<span>$i</span> " . htmlspecialchars($source[$i]); } } return $matches[1] . $output . $matches[3]; } |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| <pre class="php"> include_once 'includes/common.inc'; include_once 'includes/bootstrap.inc'; fix_gpc_magic(); odisys_page_header(); $status = menu_execute_active_handler(); switch ($status) { case MENU_NOT_FOUND: not_found(); break; case MENU_ACCESS_DENIED: access_denied(); break; } drupal_page_footer(); echo theme_print(); </pre> |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Array ( [0] => include_once 'includes/common.inc'; [1] => include_once 'includes/bootstrap.inc'; [2] => [3] => fix_gpc_magic(); [4] => [5] => odisys_page_header(); [6] => [7] => $status = menu_execute_active_handler(); [8] => [9] => switch ($status) { [10] => case MENU_NOT_FOUND: [11] => not_found(); [12] => break; [13] => case MENU_ACCESS_DENIED: [14] => access_denied(); [15] => break; [16] => } [17] => [18] => drupal_page_footer(); [19] => [20] => echo theme_print(); ) |
Dan ziet de output er in de browser als volgt uit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 1 include_once 'includes/bootstrap.inc'; 2 3 fix_gpc_magic(); 4 5 odisys_page_header(); 6 7 $status = menu_execute_active_handler(); 8 9 switch ($status) { 10 case MENU_NOT_FOUND: 11 not_found(); 12 break; 13 case MENU_ACCESS_DENIED: 14 access_denied(); 15 break; 16 } 17 18 drupal_page_footer(); 19 20 echo theme_print(); |
Met andere woorden, de lege regels 2, 4, 6, 8, 17 en 19 krijgen geen newline in de output. Ook "\n" vervangen door <br> werkt niet. Wie ziet wat ik fout doe?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Het voordeel van ubb (of wat voor eigen formaat dan ook) is dat je de volledige controle hebt over wat mensen kunnen gebruiken en hoe dit eruit komt te zien.Reveller schreef op woensdag 05 oktober 2005 @ 10:47:
Een vraag van algemene aard: wat is eigenlijk het voordeel van een UBB parser boven het direct intikken van HTML? Zoveel eenvoudiger is het toch niet uit te leggen dat een link [ url=http://www.link.com] zo gemaakt moet worden[/url] dan < a href="www.link.com">zo</a>? Het enige voordeel zie ik bij constructies als [image=43], in plaats van een complete image tag te moeten tikken. En later zou je altijd nog eens de image tag-constructie zelf kunnen aanpassen, en alle UBB [image] tags veranderen dan gewoon mee. Is dat meteen ook de hoofdreden of zijn er meer argumenten te geven voor het maken van een UBB (ook binnen een CMS?) in plaats van het direct laten intikken van HTML?
Mja, dat dacht ik ook al. Ik kan me voorstellen dat het handig is als je UBB-tags maakt van de vorm [kader=Mijn kader]Deze tekst komt in een mooi vormgegeven kader met als titel "Mijn kader"[/kader]. En als de <b>-tag depreciated wordt en vanaf nu <strong> de voorkeur krijgt, hoef je alleen je UBB-parser maar aan te passen ([b] wordt <strong>) in plaats van dat je alle hardcoded getikte html <b>-tags in de content in de database zou moeten veranderen. Wat ik me wel afvraag: veel GoT'ers zeggen in hun CMS een WYSIWYG editor aan te bieden. Daarmee vervalt dan het grote voordeel van een UBB editor. In hoeverre bieden jullie (vaak niet technische onderlegde klanten) UBB editors aan in plaats van WYSIWYG editors, omdat de consistentie zo meer bewaakt wordt?Bosmonster schreef op woensdag 05 oktober 2005 @ 12:28:
[...]
Het voordeel van ubb (of wat voor eigen formaat dan ook) is dat je de volledige controle hebt over wat mensen kunnen gebruiken en hoe dit eruit komt te zien.
Overigens - ik hoor het nog steeds graag als iemand een oplossing heeft voor mijn probleem 2 posts hierboven. Kom er nog steeds niet uit.
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."
Ontdek mij!
Proud NGS member
Stats-mod & forum-dude
Theoretisch, zou je, met een beetje moeite, de html die je uit een wysiwyg kunnen parsen en omzetten naar ubb. En als je het wil editen weer naar html...Reveller schreef op woensdag 05 oktober 2005 @ 16:00:
[...]
Wat ik me wel afvraag: veel GoT'ers zeggen in hun CMS een WYSIWYG editor aan te bieden. Daarmee vervalt dan het grote voordeel van een UBB editor. In hoeverre bieden jullie (vaak niet technische onderlegde klanten) UBB editors aan in plaats van WYSIWYG editors, omdat de consistentie zo meer bewaakt wordt?