hoe vanaf string str 10 chars deleten

Pagina: 1
Acties:

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Nou ik heb een probleempje. In een veld staat de volgende tekst:

[i:9eb446095c]jgjjf[/i:9eb446095c] (voor wie dit herkent, dit komt idd uit een phpbb forum tabel)

Een string replacen is kinderspel met:
bericht = replace(bericht,"[/i:", "</i>")

om zo het html compatible te maken en toch nog het forum niet verkloten. Nou is het zo dat de 10 chars hartstikke variabel zijn en die nooit gelijk zijn, het enige wat gelijk is, is de lengte, 10 stuks.

Nou moet ik dus zeg maar een functie hebben wat bericht = replace(bericht,"</i>", "</i>") doet en dan bij de start en count veld 1 en 10 hebben en die dan verwijdert, alleen ik heb geen flauw idee hoe ik die startpositie terug kan krijgen, laat staan hoe ik variabele chars kan verwijderen.

/edit/

omfg wat is dit vaag uitgelegd. Ik moet dus die "9eb446095c]" wegkrijgen (11 chars dus)....

[ Voor 12% gewijzigd door siggy op 22-04-2003 18:17 ]

"I don't take life too seriously, no one gets out alive anyways..."


Verwijderd

In asp kan je gewoon Left en Right() gebruiken, lijkt mij vrij basic.
Ik weet niet wat het is onder php, sry

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Verwijderd schreef op 22 April 2003 @ 18:18:
In asp kan je gewoon Left en Right() gebruiken, lijkt mij vrij basic.
Ik weet niet wat het is onder php, sry
Jah, die functie ken ik ook maar dan moet ik de startpositie weten, en daar heb ik dus de moeite mee.

En tis idd voor asp/vbscript :)

/edit/

sterker nog, daar kun je niet eens een startpositie invoeren.

[ Voor 10% gewijzigd door siggy op 22-04-2003 18:24 ]

"I don't take life too seriously, no one gets out alive anyways..."


Verwijderd

kan dat niet gewoon met SQL?

select trimleft(veldnaam, startpositie) from tabel

zoiets?

  • Paul
  • Registratie: September 2000
  • Laatst online: 19-08 15:39
Kun je niet zoiets als int start = locate('[i:', text) uitvoeren? Want die [i: lijken me ook steeds hetzelfde.

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Och, ik weet hem al...... Is wel behoorlijk log en langzaam maar die gaat wel werken.
ik pak de mid functie gewoon telkens strings van 3 stuks en zoek voor "[i:" tot aan de lengte van het hele veld. Als de string is gevonden pak ik de eerstvolgende 10 of 11 chars en die verwijder ik dan of zet ik andere vage tekens voor in de plaats zodat ik die met eenvolgende rpelace functie kan uitwissen.

Wie wat beters heeft, gaarne :)

"I don't take life too seriously, no one gets out alive anyways..."


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
[Goeie zin modus]
PHP:
1
$bericht=preg_replace("/\\[(\/)?i:[a-zA-Z0-9]{10}\]/","<\\1i>",$bericht);

This will do the trick... ;)

En als je wat wilt leren: zoek in google of zo eens op "reguliere expressies" of "regexp" of "regular expressions" (voor de engelstaligen :) )

Verwijderd

ff er over nagedacht:

select trimright(trimleft(veldnaam, 10), 4) from tabel

Als je met deze query je spullen ophaalt, dan krijg je ze meteen goed. Hoe je ze ook niet meer aan te passen. ik weet alleen niet hoe Access daarmee omgaat.

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
beetle71 schreef op 22 April 2003 @ 18:33:
[Goeie zin modus]
PHP:
1
$bericht=preg_replace("/\\[(\/)?i:[a-zA-Z0-9]{10}\]/","<\\1i>",$bericht);

This will do the trick... ;)

En als je wat wilt leren: zoek in google of zo eens op "reguliere expressies" of "regexp" of "regular expressions" (voor de engelstaligen :) )
Bedankt, maar ik ben onduidelijk geweest, het is in asp/vbscript :>
Verwijderd schreef op 22 april 2003 @ 18:33:
ff er over nagedacht:

select trimright(trimleft(veldnaam, 10), 4) from tabel

Als je met deze query je spullen ophaalt, dan krijg je ze meteen goed. Hoe je ze ook niet meer aan te passen. ik weet alleen niet hoe Access daarmee omgaat.
Dat was me in principe ook gelukt ware het niet weer dat ik lekker onduidelijk ben geweest en dat dat veld niet alleen bestaat uit die paar chars, die staan dus gewoon ergens in eene text.

:>

"I don't take life too seriously, no one gets out alive anyways..."


Verwijderd

siggy schreef op 22 April 2003 @ 18:35:
[...]
Bedankt, maar ik ben onduidelijk geweest, het is in asp/vbscript :>
Je kan onder ASP ook reguliere expressies gebruiken, wat erg handig kan zijn voor dit soort situaties. Zie http://msdn.microsoft.com...pt56/html/vsobjRegExp.asp

Enjoy :)

[ Voor 15% gewijzigd door Verwijderd op 22-04-2003 18:44 ]


  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
Nou, wat dit forum toch al niet voor je doet :)

stukje code wat werkt, merk niet echt veel in performance
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       bericht = null
       bericht = replace(fp("post_text"),vbCrLf, "<br>")

      lengte = len(bericht)
        i = 1
        while i <= lengte
            if mid(bericht,i,3) = "[i:" then
               verwijder = mid(bericht,i+3,11)
                bericht = replace(bericht, verwijder, "")
            end if
         i = i + 1
        wend

        bericht = replace(bericht,"[i:", "<i>")
        bericht = replace(bericht,"[/i:", "</i>")

lol lekker uitlijnen

[ Voor 16% gewijzigd door siggy op 22-04-2003 18:47 ]

"I don't take life too seriously, no one gets out alive anyways..."


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
[Nog steeds goede zin modus]
ASP:
1
2
3
4
5
6
Dim re
Set re = new RegExp
re.IgnoreCase = true
re.Global = true
re.Pattern = "\\[(\/)?i:[a-zA-Z0-9]{10}\]"
Resonse.Write re.Replace(Bericht,"<$1i>")

Zou het volgens mij moeten zijn voor asp/vbscript. (Heb het niet kunnen testen, heb (gelukkig ;) ) hier geen asp bak ter beschikking)

  • siggy
  • Registratie: Juni 2001
  • Laatst online: 16-08 11:20

siggy

Wait.... what?

Topicstarter
beetle71 schreef op 22 april 2003 @ 18:48:
[Nog steeds goede zin modus]
ASP:
1
2
3
4
5
6
Dim re
Set re = new RegExp
re.IgnoreCase = true
re.Global = true
re.Pattern = "\\[(\/)?i:[a-zA-Z0-9]{10}\]"
Resonse.Write re.Replace(Bericht,"<$1i>")

Zou het volgens mij moeten zijn voor asp/vbscript. (Heb het niet kunnen testen, heb (gelukkig ;) ) hier geen asp bak ter beschikking)
Held :> _/-\o_

Waarom vind je asp niet fijn?

[ Voor 8% gewijzigd door siggy op 22-04-2003 19:00 ]

"I don't take life too seriously, no one gets out alive anyways..."


  • beetle71
  • Registratie: Februari 2003
  • Laatst online: 21-08 17:05
Nou ja, niet fijn, heb zo mijn voorkeur ;)

Kijk bijv. maar eens naar het lengteverschil tussen de asp en php code die ik gaf.

Maar het is met name een ervarings-kwestie, en natuurlijk ook een centen (M$) kwestie, als je een legale! eigen server moet/wil draaien
Pagina: 1