Toon posts:

[PHP] geladen tekst afkorten door spatie te zoeken...

Pagina: 1
Acties:
  • 158 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,
ik ben bezig met een nieuws-script aant maken,
nou heb ik een tabel in de database met een grote lap tekst,
deze tekst is meestal iets van 2000 woorden. Nou wil ik een overzicht
van alle nieuws, met een inleiding van het nieuws(het begin van de 2000 woorden,
hervoor genoemd) zonder een aparte tabel aan te maken daarvoor.

DUS:
ik moet nu een functie zien te schrijven die rond de 200 karakters naar een spatie
zoekt en dan de karaters VOOR deze karakters schrijft. Even een makkelijk voorbeeld dat ik nu even heb gemaakt (maar niet werkt)
//nws_body is de grote lap tekst die ingeladen word

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function tekst200 ($nws_body)
{

//$nws_body = substr($nws_body,0,200);

 if (substr($nws_body,199,200)==" "){ 
    print (substr($nws_body,0,200));    }
 if (substr($nws_body,198,199)==" "){
    print (substr($nws_body,0,199);     }
 if (substr($nws_body,197,198)==" "){
    print (substr($nws_body,0,198);     }
 if (substr($nws_body,196,197)==" "){
    print (substr($nws_body,0,197);     }
 if (substr($nws_body,195,196)==" "){
    print (substr($nws_body,0,196);     }
 if (substr($nws_body,194,195)==" "){
    print (substr($nws_body,0,195);     }
 if (substr($nws_body,193,194)==" "){
    print (substr($nws_body,0,194);     }
 if (substr($nws_body,192,193)==" "){
    print (substr($nws_body,0,193);     }
}


ik hoop dat jullie er een beetje wijs uit kunnen komen en me misschien wat
tips kunne geven of DE oplossing,

met vriendelijke groet Roel. O-)

[ Voor 5% gewijzigd door curry684 op 24-09-2003 14:29 . Reden: Mooi he, [PHP]-tags :) ]


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Zonder aan PHP (of iedere andere programmeertaal) te denken, moet je oplossing toch iets in deze richting zijn:

1. Haal de eerste 200 characters op
2. Zoek van rechts naar links naar een spatie
3. Check op welke positie die spatie staat
4. Haal de string van links tot aan de positie van de spatie op

Volgens mij is dit heel makkelijk te realiseren in PHP :?

en groeten hoeft niet meer onderaan je post

[ Voor 7% gewijzigd door BtM909 op 24-09-2003 14:11 ]

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (substr($nws_body,199,200)==" "){ 
print (substr($nws_body,0,200)); }
if (substr($nws_body,198,199)==" "){
print (substr($nws_body,0,199); }
if (substr($nws_body,197,198)==" "){
print (substr($nws_body,0,198); }
if (substr($nws_body,196,197)==" "){
print (substr($nws_body,0,197); }
if (substr($nws_body,195,196)==" "){
print (substr($nws_body,0,196); }
if (substr($nws_body,194,195)==" "){
print (substr($nws_body,0,195); }
if (substr($nws_body,193,194)==" "){
print (substr($nws_body,0,194); }
if (substr($nws_body,192,193)==" "){
print (substr($nws_body,0,193);


Dit lijkt mij een beetje onnozel, niet ? :)

Dit kunt je toch veel beter realiseren met een iteratie

En ik denk dat BtM909 ongeveer de oplossing gegeven geeft in pseudocode

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


Verwijderd

Probeer het dan in ieder geval zo lijkt me :)
PHP:
1
2
3
4
for x = 200 to 1 step -1
 if (substr($nws_body,x-1,x)==" "){ 
 print (substr($nws_body,0,x)); }
next

geen idee of mijn php goed is, ik kan namelijk helemaal geen php :p Maar het idee lijkt me duidelijk

  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58

SJR

Wat dacht je van deze functie: http://nl3.php.net/manual/en/function.strpos.php

oftewel:

PHP:
1
$nws_body = substr($nws_body, 0, strpos($nws_body, ' ', 200));

[ Voor 38% gewijzigd door SJR op 24-09-2003 14:32 ]


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je moet zoals de post hierboven ook zeggen, een functie maken die dmv een loop naar spaties zoekt. Maak dan de functie ook zo dat je de gewenste lengte (bijv 200) als parameter meegeeft. Dan hoef je maar 1 ding te veranderen als je je layout wijzigt, of als je ergens anders ook iets wil inkorten.

edit:

Ok, antwoord al gegeven...

[ Voor 8% gewijzigd door Voutloos op 24-09-2003 14:33 ]

{signature}


  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58

SJR

Een loop is dus niet echt nuttig, als PHP er een ingebouwde functie voor heeft... Maar je had er ook prima zelf achter kunnen komen door gewoon even de string functies van PHP door te kijken: http://nl.php.net/strings

btw: php heeft zelfs een nog specifiekere functie: http://nl2.php.net/manual/en/function.wordwrap.php

[ Voor 20% gewijzigd door SJR op 24-09-2003 14:40 ]


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02-2025

SchizoDuckie

Kwaak

PHP:
1
2
3
$string = 'blah di blah di blah di blah and on and on and on. Blah di blah di blah yackerdie smackerdy schmackerdie'; //u get the point;
$tinystring = substr($string, 0, 210); // strip de eerste 210 karakters van een string af. bijvoorbeeld.
$blaatstring = substr($tinystring, 0 , strrpos($tinystring, ' ') ); // pak alles van 0 tot de eerste spatie vanaf rechts van die 210 karakters.


Hope that helps :)

Stop uploading passwords to Github!


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:06

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mja, vrij basic programmeerprobleem. Leren programmeren doe je niet op GoT, daar heb je mooie boeken en tutorials voor.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1

Dit topic is gesloten.