30. juli 2006 - 14:30
Der er
12 kommentarer og 1 løsning
Smelte to regulære udtryk sammen2
Kan disse to regulære udtryk smeltes sammen til et? $string = preg_replace( "#\^(\d)#i", "<sup>\\1</sup>", $string ); $string = preg_replace( "#\_(\d)#i", "<sub>\\1</sub>", $string );
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
F.eks. sådan: $string = preg_replace( "#\(?:^|_)(\d)#i", "<sub>\\1</sub>", $string );
Warning: preg_replace() [function.preg-replace]: Compilation failed: unmatched parentheses at offset 7
Hmmm? Hvad laver den \ foran ^-tegnet og _-tegnet? Er det dikke en fejl at den er der i de oprindelige udtryk?
Normalt bruges \ til at escape. Et ^-tegn kan godt have brug for en escape, hvis men ikke vil have at den fortolkes som "start af linjen" ankeret. Men det kan et _ nu ikke - dette tegn har ingen speciel mening i et regulært udtryk. Der er enten noget galt med den sidste, eller også er der et \-tegn for meget i begge to.
Jeg kan forkorte dem således: $string = preg_replace( "#\^(\d)#", "<sup>\\1</sup>", $string ); $string = preg_replace( "#_(\d)#", "<sub>\\1</sub>", $string );
Sådan: $string = preg_replace( "#(?:\^|_)(\d)#", "<sub>\\1</sub>", $string );
jeg tror du har misforstået det :D man skal både kunne løfte og sænke tallene ;)
Ahh, ok jeg havde ikke set at der var forskel på plads nr. 2. :^| Ok, de kan godt kombineres, men det beliver altså ikke til færre linjer kode (og så er der jo ikke så meget ved det).
Hvad med $string = preg_replace(Array("#\^(\d)#", "#_(\d)#"), Array("<sup>\\1</sup>","<sub>\\1</sub>"), $string );
30. juli 2006 - 15:57
#10
$from = ("#\^(\d)#", "#_(\d)#"); $to = ("<sup>\\1</sup>", "<sub>\\1</sub>"); string = preg_replace($from, $to, $string);
30. juli 2006 - 16:15
#11
ok. så er det ligemget ;) smid svar erikjacobsen og nielle
30. juli 2006 - 16:16
#12
Svar :^)
30. juli 2006 - 16:26
#13
Nej tak.
Kurser inden for grundlæggende programmering