[PHP] Regular Expressions (klein probleempje)

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • NightH4wk
  • Registratie: Februari 2002
  • Laatst online: 10-11-2024
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. _/-\o_

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

begin es met wat je al hebt
was niet van plan het voor te kauwen

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • NightH4wk
  • Registratie: Februari 2002
  • Laatst online: 10-11-2024
D2k schreef op 26 April 2003 @ 23:31:
begin es met wat je al hebt
was niet van plan het voor te kauwen
Ik zou het op zo'n manier doen:

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 ]


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
^( *<br>)(*.*)( *<br>)*$


Of iets dergelijks. Regexes zijn goed gedocumenteerd, waarom kan je er zelf niet uitkomen?

Acties:
  • 0 Henk 'm!

Verwijderd

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. :)
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?

Acties:
  • 0 Henk 'm!

  • NightH4wk
  • Registratie: Februari 2002
  • Laatst online: 10-11-2024
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?
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. :) Ik ga maar eens oefenen met expressions.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

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


Acties:
  • 0 Henk 'm!

  • NightH4wk
  • Registratie: Februari 2002
  • Laatst online: 10-11-2024
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 :)
Thanks, en vannacht zal ik nog veel uur tutorials gaan lezen en testen om het goed te maken dat ik dit topic ben gestart. :)

Acties:
  • 0 Henk 'm!

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 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

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.
en dan wordt het toch nog voorgekauwd :X ;)

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


Acties:
  • 0 Henk 'm!

  • NightH4wk
  • Registratie: Februari 2002
  • Laatst online: 10-11-2024
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. _/-\o_
crisp schreef op 27 April 2003 @ 00:25:
[...]

en dan wordt het toch nog voorgekauwd :X ;)

Een alternatief zonder regular expressions:

PHP:
1
2
3
$string = str_replace('<br>', "\n", $string);
$string = trim($string);
$string = str_replace("\n", '<br>', $string);
Bedankt. _/-\o_
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 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 16:12

crisp

Devver

Pixelated

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.
toch een klein probleempje met deze; hij matched alleen op <br /> en <BR />; de / is niet optioneel...
NightH4wk schreef op 27 April 2003 @ 00:26:
Bedankt. _/-\o_
Maar die haalt alle breaks weg, en niet alleen aan het begin en eind. :)
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);

[ Voor 16% gewijzigd door crisp op 27-04-2003 15:36 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • NightH4wk
  • Registratie: Februari 2002
  • Laatst online: 10-11-2024
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);
Nogmaals bedankt voor de code, en ik zal veel tutorials gaan lezen en meer gaan testen. :)
En Cheatah's code edit ik wel totdat hij precies werkt, leer ik veel van.
Pagina: 1