[PHP] Lange woorden afbreken.

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

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik wil graag lange woorden dmv PHP afbreken.
Ik heb hiervoor een functie geschreven, en alle woorden met een strlen > x, worden netjes afgebroken.

code:
1
LongWord = "first x chars from LongWord" . ' ' . "the rest of LongWord"


Maar mijn users mogen ook BB-code gebruiken incl. [img]-tag en je voelt hem al aankomen mijn functie breekt ook lange URL's van plaatjes (tussen [img]en[/img]) af, en dat is weer niet de bedoeling.

Nou dan hoor ik je denken van: check de string eerst op aanweizigheid van [img]en[/img]. Gevonden? -> string overslaan.

Als ik dat doe, dan worden ook strings in de vorm van:
code:
1
String = "LongWord1[img]URL[/img]LongWord2"

ook overgeslagen en die moeten wel afgebroken worden.

Heb de search al gebruikt maar geen antwoord gevonden.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Bedenk je eerst of het wel zo netjes is om lange woorden hard af te breken.
Dan wanneer je ze af moet breken (voor, na of tijdens de conversie) en dan moet je gaan kijken of het op die plek kan.
't Lijkt me dat je het tijdens de conversie wilt doen en als je je bb-parser erg goed in elkaar hebt steken heb je voor het genereren van images een andere functie of stuk functionaliteit dan voor de verwerking van gewone tekst...

Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Is wel es eerder besproken (iirc een maandje geleden). Lees dit maar eens door: [rml][ php] Nieuwsitems efficient inkorten *[/rml]/ :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Thanx, ik heb een tijdelijke oplossing gevonden.

[ Voor 15% gewijzigd door Verwijderd op 28-12-2003 16:08 ]


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

(jarig!)
Verwijderd schreef op 28 december 2003 @ 16:01:
Thanx, ik heb een tijdelijke oplossing gevonden.
Is ie nog bijzonder genoeg om hem met ons te delen? (er kunnen meer mensen naar zoiets op zoek zijn) :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ACM schreef op 28 december 2003 @ 17:15:
[...]

Is ie nog bijzonder genoeg om hem met ons te delen? (er kunnen meer mensen naar zoiets op zoek zijn) :)
D.m.v. CSS
code:
1
2
3
table {
  table-layout: fixed;
}

Heb ik gevonden in string afbreken binnen width van tabel

Ik was er bijna met PHP alleen als ik het met PHP doe dan heb ik nog een probleem: mensen die meerdere plaatjes naast elkaar posten, en dan wordt de layout alsnog verneukt.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
In PHP
Breek alle lange woorden af. Gebruik 'n' ipv ' ' (spatie).
Bij de BB-code -> HTML-conversie vervang 'n' door '' in URL's tussen [img]en[/img].

Werkt perfect.

Edit: Je moet er wel voor zorgen dat je de [img]-tags intact blijven.

[ Voor 59% gewijzigd door Verwijderd op 29-12-2003 18:04 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voor de mensen die niet weten hoe je lange woorden kan breken:

Hier is mijn code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function break_word($word, $size)
{
    if (strlen($word) < $size)
        return $word;
   
    $display = "";
    $start = 0;
    for ($i = 0; $i < strlen($word); $i++)
    {
        $display .= substr($word, $start, $size) . "\n";
        $start = $start + $size;
    }
    return trim($display);
}

function break_long_words($text, $size)
{
    $words = explode(" ", $text);
    for($i = 0; $i < count($words); $i++)
        if(strlen($words[$i]) > $size)
            $text = str_replace($words[$i], break_word($words[$i], $size), $text);
    return $text;
}

Acties:
  • 0 Henk 'm!

  • pindas
  • Registratie: April 2016
  • Laatst online: 13-04-2016
Dit probleem is nog altijd lastiger dan het lijkt.. kijk eens op *snip* spam

[ Voor 39% gewijzigd door RobIII op 13-04-2016 11:44 ]


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

enter CSS:
code:
1
word-wrap: break-word;

;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Standeman
  • Registratie: November 2000
  • Laatst online: 20:27

Standeman

Prutser 1e klasse

Ik denk dat de TS na 13 jaar niet meer met dit probleem worstelt :p

The ships hung in the sky in much the same way that bricks don’t.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En daarbij is 't een eigen domein/site dat 'ie loopt te spammen :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.