[php]   vervangen door spatie,     niet

Pagina: 1
Acties:
  • 473 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
Hallo Tweakers,

Ik ben op mijn website een soort scriptpagina aant zetten waar ik mijn eigen scriptjes op kan zetten!

ik load het script up, schrijf het weg, dat gaat allemaal perfect, maar daarna doe ik dit:

PHP:
1
highlight_file("data/scripts/".$script['scriptnaam'].".php");


dan geeft hij het script weer als source ( dit werkt overigens heel goed )

maar, hij vervangt iedere spatie door
code:
1
 
waardoor de browser het ziet als 1 regel, en dus niet afbreekt (de code wordt weergegeven in een div).

dus ik doe dit:

PHP:
1
2
$string = highlight_file("data/scripts/".$script['scriptnaam'].".php",TRUE);
print str_replace(" "," ",$string);


dit werkte goed, de regels zijn nu echt woord per woord, en worden afgebroken, maar mijn structuur is weg! Er staan op veel plaatsen 3 spaties ( = tab ), en dit valt weg als die
code:
1
   
vervangen wordt door 3 echte spaties (html ziet maar 1)

ik dacht, dit kan ik oplossen met een Regex, maar helaas, ik moet het doen met tutorials, en daaruit kan je zo moeilijk zelf iets maken.

ik heb geprobeerd met $, ^, /, enz, maar ik kwam er niet uit

Even kort samengevat:

code:
1
texttexttext   text text text


moet worden:
code:
1
texttexttext   text text text

!

kan iemand mij helpen met zo een regex?

Danku,

Kristof

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Met een regex zou ik het niet kunnen, maar zoiets kan evt ook als je er met een regex niet uitkomt:
PHP:
1
2
3
$string = str_replace('   ','[tab]',$string);
$string = str_replace(' ','',$string);
$string = str_replace('[tab]','   ',$string);

Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Alléén die met één spatie vervangen:
PHP:
1
$fixed = preg_replace("&nbsp{1,1}", "", $string);

Alléén die met één of twéé spaties vervangen:
PHP:
1
$fixed = preg_replace("&nbsp{1,2}", "", $string);


Uitleg over preg_replace(); en uitleg over perl regular expressions.

Overigens is dit iets waar je vooral zélf moet zoeken en lezen :) .

[ Voor 7% gewijzigd door JHS op 15-10-2005 22:59 ]

DM!


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
JHS schreef op zaterdag 15 oktober 2005 @ 22:58:
Alléén die met één spatie vervangen:
PHP:
1
$fixed = preg_replace("&nbsp{1,1}", "", $string);
Volgens mij vervang je dan alsnog elke nbsp afzonderlijk...

Je moet kijken naar lookahead en lookbehind assertions. Waarmee je dan die nbsp's wilt vervangen die niet door een nbsp voorafgegaan of gevolgd worden.

Volgens mij moet het met zoiets lukken:

/(?<!&nbsp;)&nbsp;(?!&nbsp;)/

[ Voor 6% gewijzigd door ACM op 15-10-2005 23:10 ]


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Ik hebt het maar getest, en je hebt gelijk, ik interpreteerde "Match at least n but not more than m times" kennenlijk verkeerd, wat ik toch maar raar vindt, aangezien ik dan niet snap wat er met de "but not more than" bedoelt wordt.

Overigens was mijn voorbeeld sowieso fout, het had dan altijd nog:
PHP:
1
$fixed = preg_replace("/(&nbsp){1,1}/", "", $string);
moeten zijn :) .

Maar onderstaande werkt iig:
PHP:
1
$fixed_acm = preg_replace("/(?<!&nbsp;)&nbsp;(?!&nbsp;)/", "", $string);

[ Voor 11% gewijzigd door JHS op 15-10-2005 23:34 ]

DM!


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Topicstarter
_/-\o_ _/-\o_ _/-\o_ _/-\o_

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • NightBird
  • Registratie: Januari 2000
  • Laatst online: 19-09 13:48

NightBird

DPC-Crew Coding
Of je zet er een 'style="white-space:pre"' bij, zodat ook 3 spaties gewoon weergegeven wordt :)

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
JHS schreef op zaterdag 15 oktober 2005 @ 23:33:
Ik hebt het maar getest, en je hebt gelijk, ik interpreteerde "Match at least n but not more than m times" kennenlijk verkeerd, wat ik toch maar raar vindt, aangezien ik dan niet snap wat er met de "but not more than" bedoelt wordt.
Wat snap je hieraan niet? Het betekent: Als minimaal n en maximaal m keer iets voorkomt dan heb je een match. Bij een match gaat het altijd om de langste match. preg_replace gaat na een vervanging verder met de string en probeert nog meer matches te vinden.

Je gaat bijvoorbeeld a{2,4} zoeken in aaabaaaaaababababaaaaaba. De vette en onderstreepte dingen matchen aaabaaaaaababababaaaaaba

Hetzelfde geldt als je (&nbsp;){1,1} gaat zoeken in &nbsp;&nbsp;&nbsp;. Je vindt het dus drie keer.

[ Voor 12% gewijzigd door Daos op 16-10-2005 15:41 . Reden: typo's ]


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Aah, nu snap ik het, alhoewel ik het me vanmiddag in de auto ook al realiseerde :+ . Bedankt iig :) .

DM!


Acties:
  • 0 Henk 'm!

Verwijderd

NightBird schreef op zondag 16 oktober 2005 @ 11:59:
Of je zet er een 'style="white-space:pre"' bij, zodat ook 3 spaties gewoon weergegeven wordt :)
Maar dan wordt de regel niet afgebroken, en daarom wilde TS de &nbsp;'s vervangen door welbreakingspaces ;)

[ Voor 6% gewijzigd door Verwijderd op 16-10-2005 20:22 ]


Acties:
  • 0 Henk 'm!

  • NightBird
  • Registratie: Januari 2000
  • Laatst online: 19-09 13:48

NightBird

DPC-Crew Coding
Verwijderd schreef op zondag 16 oktober 2005 @ 20:22:
[...]

Maar dan wordt de regel niet afgebroken, en daarom wilde TS de &nbsp;'s vervangen door welbreakingspaces ;)
Ow verdomd.. wat handig, ik dacht dat daar de nowrap voor was. Excuus voor het verkeerde been!

WatHoorJeWaar · Asobakken
Eerdere projecten: Leading Courses · Brandstof-zoeker.nl · Voertuig-zoeker.nl

Pagina: 1