<spatie> naar &nbsp; = nowrapping??

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jesper Diovo

Jesper Diovo

01/02/2009 16:58:00
Quote Anchor link
Hoi,

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 &nbsp; 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 &nbsp;, 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)
PHP script in nieuw venster Selecteer het PHP script
1
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, '&nbsp;', $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 &nbsp;'s zelf. In de code blijven deze namelijk zichtbaar, wat eigenlijk niet de bedoeling is. De code is nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
           $match = str_replace(' ', '&nbsp;', $match);
        $result .= '<code>' . ubbToHtml(substr($match, 6, -7)) . '</code>';
}

?>


Nu ziet de code er gewoon goed uit, behalve dat alle spaties nog als &nbsp; worden weergegeven.
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
 
PHP hulp

PHP hulp

03/02/2023 10:53:59
 
Armaron

Armaron

01/02/2009 18:25:00
Quote Anchor link
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 &nbsp; 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 &nbsp;.

Als je het wil veranderen, doe maar. Maar ik zou gewoon spaties gebruiken.
 
PHP Newbie

PHP Newbie

01/02/2009 18:38:00
Quote Anchor link
Zet de code tussen <pre> en </pre>
 
Jesper Diovo

Jesper Diovo

01/02/2009 19:11:00
Quote Anchor link
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 &nbsp; 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 &nbsp;.

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 &nbsp; 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
 
Jesper Diovo

Jesper Diovo

02/02/2009 16:36:00
Quote Anchor link
Bump.
 
Daan

Daan

02/02/2009 17:07:00
Quote Anchor link
css whilte-space: pre; ??
Linkje
 
Jesper Diovo

Jesper Diovo

02/02/2009 18:57:00
Quote Anchor link
Dank voor je reactie. Jammer dat je niet de moeite hebt genomen heel het topic door te lezen, want dan had je geweten dat ik nu al veel verder ben ;-).

Inmiddels ben ik zelfs nog verder. Het is me gelukt :-). Dit is 'm uiteindelijk geworden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if(preg_match('/\[code\]((\n|.)*?)\[\/code\]/i', $match)) // General code block
{
    $match = str_replace(' ', '&nbsp;', $match);
    
    $result .= '<pre>' . str_replace('&amp;nbsp;', '&nbsp;', ubbToHtml(substr($match, 6, -7))) . '</pre>';
}

?>


Ik had niet in de gaten dat &nbsp; bij output van de code eigenlijk &amp;nbsp; was. Daardoor replacete hij ze niet terug en zag hij ze niet als html_entity-code. Door die &amp;nbsp; te replacen voor een echte html_entity-code, staan de spaties nu helemaal goed! :-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.