<spatie> naar = nowrapping??
Ik kom er even niet meer uit. Ik probeer mijn eigen 'blog' op orde te krijgen, zodat ik daar stukken code in kan gaan plaatsen. Nu gebruik ik de Highlighters van Pholeron, die samen vormen een mooi geheel. Een beetje aangepast en het is naar mijn wens. Alleen, nu verwijderde de code telkens 'onnodige' (lees: aan het begin van een regel staande) spaties. Terwijl die wel nodig zijn, omdat ik die i.p.v. een tab gebruik voor overzichtelijkheid (ja...normaal gesproken wel met tab, maar in een internetformulier gaat dat niet).
Nu ben ik erachter gekomen dat als ik spaties omzet naar dat dan de spaties wel zichtbaar blijven. Het enige is, dat dan een boel niet meer werkt. Hij zet namelijk ook de spaties in de highlighting (de span-tags) om in , waardoor de opmaak niet meer werkt.
Nu had ik het plan dat te doen met een mooie Regular Expression. Laat het nu zo zijn dat ik alleen nog maar de simpelste kan maken en hier dus absoluut niet uitkom. Hij moet namelijk matchen aan een spatie, maar volgens mij matcht hij veels te veel, omdat er meerdere dingen variabel zijn.
Ik heb nu dit: /([^<][a-z ]) ?([ a-z][^>])/i - maar die helpt absoluut niet. Iemand die een betere ervaring heeft met regex'en en die mij beter op weg kan helpen?
- Jezpur
P.S.: stukje code:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
$sRegExp = '/([^<][a-z ]) ?([ a-z][^>])/i';
$match = preg_replace($sRegExp, ' ', $match);
$result .= '<code>' . ubbToHtml(substr($match, 6, -7)) . '</code>';
}
?>
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
$sRegExp = '/([^<][a-z ]) ?([ a-z][^>])/i';
$match = preg_replace($sRegExp, ' ', $match);
$result .= '<code>' . ubbToHtml(substr($match, 6, -7)) . '</code>';
}
?>
Edit: Ik dacht veels te moeilijk. Heb het nu veranderd en nu is het enige dat nog weggewerkt moet worden de 's zelf. In de code blijven deze namelijk zichtbaar, wat eigenlijk niet de bedoeling is. De code is nu:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
$match = str_replace(' ', ' ', $match);
$result .= '<code>' . ubbToHtml(substr($match, 6, -7)) . '</code>';
}
?>
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
$match = str_replace(' ', ' ', $match);
$result .= '<code>' . ubbToHtml(substr($match, 6, -7)) . '</code>';
}
?>
Nu ziet de code er gewoon goed uit, behalve dat alle spaties nog als worden weergegeven.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
De reden waarom is dat ze willen vermijden dat er onmogelijke tekens (zoals &160;) opeens in een tekst staan omdat er ergens een fout is gebeurd. Space of ControlChars is beter leesbaar voor een niet technische gebruiker dan .
Als je het wil veranderen, doe maar. Maar ik zou gewoon spaties gebruiken.
Zet de code tussen <pre> en </pre>
Armaron schreef op 01.02.2009 18:25:
Ik ben net afgestudeerd als informaticus met de optie systeemontwikkeling (lees: programmeren). Bij elk programmatie vak hebben ze (onze docenten) ons op het hart gedrukt: Gebruik niet meer. Gebruik liever gewone spaties, Space() of ControlChars. Ik kan me op het moment enkel VB.NET voorbeelden voor de geest halen.
De reden waarom is dat ze willen vermijden dat er onmogelijke tekens (zoals &160;) opeens in een tekst staan omdat er ergens een fout is gebeurd. Space of ControlChars is beter leesbaar voor een niet technische gebruiker dan .
Als je het wil veranderen, doe maar. Maar ik zou gewoon spaties gebruiken.
De reden waarom is dat ze willen vermijden dat er onmogelijke tekens (zoals &160;) opeens in een tekst staan omdat er ergens een fout is gebeurd. Space of ControlChars is beter leesbaar voor een niet technische gebruiker dan .
Als je het wil veranderen, doe maar. Maar ik zou gewoon spaties gebruiken.
Wil ik ook, maar als je heel het verhaal had gelezen, snapte je waarschijnlijk dat anderzijds de spaties niet zouden blijven staan. Ik replace de spaties dus met om ze nadat alle code is gehighlight weer te replacen met een spatie. Maar dat laatste wil dus niet...
@PHP Newbie: dan gaat heel de code buiten de vakjes en klopt er nog maar weinig van...
Edit2: nu ik van <code> <pre> maakte stond alles nog goed, maar de spaties werden niet gepakt. Ze staan overigens wel in de database, dus daar ligt het ook niet aan.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
Bump.
Inmiddels ben ik zelfs nog verder. Het is me gelukt :-). Dit is 'm uiteindelijk geworden:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
$match = str_replace(' ', ' ', $match);
$result .= '<pre>' . str_replace('&nbsp;', ' ', ubbToHtml(substr($match, 6, -7))) . '</pre>';
}
?>
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
$match = str_replace(' ', ' ', $match);
$result .= '<pre>' . str_replace('&nbsp;', ' ', ubbToHtml(substr($match, 6, -7))) . '</pre>';
}
?>
Ik had niet in de gaten dat bij output van de code eigenlijk &nbsp; was. Daardoor replacete hij ze niet terug en zag hij ze niet als html_entity-code. Door die &nbsp; te replacen voor een echte html_entity-code, staan de spaties nu helemaal goed! :-)