Hey, ik heb een klein probleempje met regular expressions, want het lukt me niet om de breaks (<br>) aan het begin en aan het eind van een string weg te halen, en dan moet alles wat in de string staat niet veranderen, en daar staan ook breaks in. Dus de breaks moeten vooraan weg totdat hij iets anders tegenkomt dan een break of een spatie, en de breaks moeten achteraan weg zodat de string niet meer begint en eindigt met een break maar met iets anders, want ook een tag kan zijn of gewoon text.
Hopelijk kunnen jullie mij helpen, want ik kom er niet uit. Bedankt alvast.
begin es met wat je al hebt
was niet van plan het voor te kauwen
was niet van plan het voor te kauwen
Doet iets met Cloud (MS/IBM)
Ik zou het op zo'n manier doen:D2k schreef op 26 April 2003 @ 23:31:
begin es met wat je al hebt
was niet van plan het voor te kauwen
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| $temp["exploded"]["string"] = explode("/\015\012|\015|\012/", $string); $common["stop"]["forloop"] = false; for(reset($temp["exploded"]["string"]); $key = key($temp["exploded"]["string"]); next($temp["exploded"]["string"])) { if($common["stop"]["forloop"] !== true) { if (eregi("^<br>$", $temp["exploded"]["string"]["key"])) { $temp["exploded"]["string"]["key"] = ""; } elseif (eregi("^<br><br>$", $temp["exploded"]["string"]["key"])) { $temp["exploded"]["string"]["key"] = ""; } else { $common["stop"]["forloop"] = true; } } } $string = implode("/\015\012|\015|\012/", $temp["exploded"]["string"]); |
Hmm, misschien is het toch handiger om er eerst 1 regel van te maken.
Maar dat stuk code slaat natuurlijk nergens op, en daarom zoek ik een oplossing met behulp van expressions.
Ik ga wel weer ff googlen en php.net grondig doorlezen.
-edit-
Kben al iets verder.
PHP:
1
2
| $string = preg_replace( '((<br>)+$)', '', $string); $string = preg_replace( '(^+(<br>))', '', $string); |
Maar het werkt nog niet helemaal lekker.
[ Voor 26% gewijzigd door NightH4wk op 27-04-2003 00:15 ]
Verwijderd
code:
1
| ^( *<br>)(*.*)( *<br>)*$ |
Of iets dergelijks. Regexes zijn goed gedocumenteerd, waarom kan je er zelf niet uitkomen?
Verwijderd
Jij hebt echt geen idee waar je mee bezig bent, he? Misschien had je eerst moeten googlen en php.net grondig moeten doorlezen voordat je een topic postte?NightH4wk schreef op 27 april 2003 @ 00:09:
[...]
Ik zou het op zo'n manier doen:
...
Hmm, misschien is het toch handiger om er eerst 1 regel van te maken.
Maar dat stuk code slaat natuurlijk nergens op, en daarom zoek ik een oplossing met behulp van expressions.
Ik ga wel weer ff googlen en php.net grondig doorlezen.
Ik heb al aardig wat tutorials enzo gelezen, maar ik begrijp er nog niet zoveel van. Het is het moeilijkste van PHP vind ik. Maar bedankt voor je code.Verwijderd schreef op 27 April 2003 @ 00:13:
[...]
Jij hebt echt geen idee waar je mee bezig bent, he? Misschien had je eerst moeten googlen en php.net grondig moeten doorlezen voordat je een topic postte?
In de FAQ vind je wel wat links naar regular expression tutorials. Wat jij wilt is met een vrij basis regular expression al op te lossen, vandaar dat je hier ook geen antwoord zult krijgen
Intentionally left blank
Thanks, en vannacht zal ik nog veel uur tutorials gaan lezen en testen om het goed te maken dat ik dit topic ben gestart.crisp schreef op 27 April 2003 @ 00:18:
In de FAQ vind je wel wat links naar regular expression tutorials. Wat jij wilt is met een vrij basis regular expression al op te lossen, vandaar dat je hier ook geen antwoord zult krijgen
Verwijderd
PHP:
1
| $string = preg_replace ( '/^(?:\s|<br\s*\/?>)*(.*?)(?:\s|<br\s*\/?>)*$/i', '\\1', $string ); |
Zoiets... deze zal denk ik niet zo efficiënt zijn bij langere strings.
[edit]
Kleine wijziging: was twee vraagtekens vergeten...
[ Voor 42% gewijzigd door Verwijderd op 27-04-2003 00:33 ]
en dan wordt het toch nog voorgekauwdVerwijderd schreef op 27 April 2003 @ 00:21:
PHP:
1 $string = preg_replace ( '/^(?:\s|<br\s*\/>)*(.*?)(?:\s|<br\s*\/>)*$/i', '\\1', $string );
Zoiets... deze zal denk ik niet zo efficiënt zijn bij langere strings.

Een alternatief zonder regular expressions:
PHP:
1
2
3
| $string = str_replace('<br>', "\n", $string); $string = trim($string); $string = str_replace("\n", '<br>', $string); |
moet je wel zeker weten dat het altijd <br> is, en geen <BR> of <br />
[ Voor 17% gewijzigd door crisp op 27-04-2003 00:26 ]
Intentionally left blank
Bedankt.Verwijderd schreef op 27 April 2003 @ 00:21:
PHP:
1 $string = preg_replace ( '/^(?:\s|<br\s*\/>)*(.*?)(?:\s|<br\s*\/>)*$/i', '\\1', $string );
Zoiets... deze zal denk ik niet zo efficiënt zijn bij langere strings.
Bedankt.crisp schreef op 27 April 2003 @ 00:25:
[...]
en dan wordt het toch nog voorgekauwd![]()
Een alternatief zonder regular expressions:
PHP:
1 2 3 $string = str_replace('<br>', "\n", $string); $string = trim($string); $string = str_replace("\n", '<br>', $string);
Maar die haalt alle breaks weg, en niet alleen aan het begin en eind.
[ Voor 14% gewijzigd door NightH4wk op 27-04-2003 00:29 ]
toch een klein probleempje met deze; hij matched alleen op <br /> en <BR />; de / is niet optioneel...Verwijderd schreef op 27 April 2003 @ 00:21:
PHP:
1 $string = preg_replace ( '/^(?:\s|<br\s*\/>)*(.*?)(?:\s|<br\s*\/>)*$/i', '\\1', $string );
Zoiets... deze zal denk ik niet zo efficiënt zijn bij langere strings.
Als het goed is worden de breaks in de text zelf weer teruggezet door de laatste regel (trim stript alleen whitespace aan het begin en einde).NightH4wk schreef op 27 April 2003 @ 00:26:
Bedankt.
Maar die haalt alle breaks weg, en niet alleen aan het begin en eind.
Ik weet ook niet of $string initieel newlines kan bevatten, mogelijk dat deze 2 simpele regexps ook al doen wat je wilt; het lijkt me sowieso sneller dan Cheatah's voorbeeld:
PHP:
1
2
| $string = preg_replace('/^(\s|<br\s*\/?>)*/i', '', $string); $string = preg_replace('/(\s|<br\s*\/?>)*$/i', '', $string); |
[ Voor 16% gewijzigd door crisp op 27-04-2003 15:36 ]
Intentionally left blank
Nogmaals bedankt voor de code, en ik zal veel tutorials gaan lezen en meer gaan testen.crisp schreef op 27 April 2003 @ 00:39:
[...]
toch een klein probleempje met deze; hij matched alleen op <br /> en <BR />; de / is niet optioneel...
[...]
Als het goed is worden de breaks in de text zelf weer teruggezet door de laatste regel (trim stript alleen whitespace aan het begin en einde).
Ik weet ook niet of $string initieel newlines kan bevatten, mogelijk dat deze 2 simpele regexps ook al doen wat je wilt; het lijkt me sowieso sneller dan Cheatah's voorbeeld:
PHP:
1 2 $string = preg_replace('^(\s|<br\s*\/?>)*/i', '', $string); $string = preg_replace('(\s|<br\s*\/?>)*$/i', '', $string);
En Cheatah's code edit ik wel totdat hij precies werkt, leer ik veel van.
Pagina: 1