14 berichten aan het bekijken - 1 tot 14 (van in totaal 14)
  • Q:
    Bijdrager
    rulus

    [php] stuk string

    Aloha 8) [size=9:f5f772de69](ben in de stemming met dit weer)[/size:f5f772de69]

    Ik heb dus in een MySQL database een hoop nieuwsberichten staan. Ik heb ook een zoekscript waarmee ik in de berichttekst kan zoeken.
    Nu wil ik als resultaat de eerste 250 karakters van het bericht tonen. Hoe moet dat?

    Klein addertje: een nieuwsbericht zien er bijvoorbeeld zo uit:
    [code:1:f5f772de69]Dit is een nieuwsbericht met een <a class="tlink" href="http://www.bullshit.com">link</a> erin.[/code:1:f5f772de69]
    Ik wil als resultaat dus wel “Dit is een nieuwsbericht met een link erin.” en niet de code van die link…

    Iemand raad?

    Bijdrager
    scriptman

    Eerste 255 tekens:

    $eerste_255_tekens = substr( strip_tags( $bericht . “…” ), 0, 255 );

    Bijdrager
    EL Mystica
    ”scriptman”

    Eerste 255 tekens:

    $eerste_255_tekens = substr( strip_tags( $bericht . “…” ), 0, 255 );

    bedoeling is prly om daar dan een link aan te koppelen om verder te lezen. Maar wat doe je dan als er een link in je nieuwsbericht zit en je die dus halverwege stript, waardoor de closing-tag wegvalt? :|

    Bijdrager
    DarkRaverNL

    Ik ben ook met een systeem bezig, voor blogs en meer, en daar zit ik ongeveer ook met hetzelfde probleem:

    [code:1:fc0850a7a9]
    function limit_text( $text, $limit )
    {
    $extra = " …";
    if( strlen($text)>$limit )
    {
    $text = substr( $text,0,$limit );
    $text = substr( $text,0,-(strlen(strrchr($text,’ ‘))) ).$extra;
    }
    return $text;
    }[/code:1:fc0850a7a9]

    en dan de row die je wil afkorten:

    [code:1:fc0850a7a9] $linkdescription = limit_text($row["content"],600);[/code:1:fc0850a7a9]

    en dan tonen:

    [code:1:fc0850a7a9]<div class="items"> $linkdescription </div>[/code:1:fc0850a7a9]

    Maar ik gebruik in mijn blog dus tags, <b> en <i> en ook links naar plaatjes en urls etc, maar door die afkorting, word dus als de <b> niet word afgesloten heel me pagina bold, weet dus iemand om die $linkdescription bijv. door te zoeken naar open tags, en die dan te sluiten ?

    Bijdrager
    EL Mystica

    één voor één alle mogelijke tags nagaan. Staat er openingtag staat, nagaan of er een closingtag staat, zoniet, er eentje plaatsen.

    Bijdrager
    scriptman

    Ik denk dat je een eigen stripfunctie moet maken dan..

    iets in deze richting misschien?

    [code:1:cb75912ebc]function powerStrip( $theString ) {
    $insideTag = false;
    $output = "";

    for ($i =0; $i++; $i < strlen($theString) {

    if (!insideTag) {
    if ($theString{$i} == "<") $insideTag = true;
    else $output .= $theString{$i};
    }
    else {
    if ($theString{$i} == ">") $insideTag = false;
    }

    }

    return $output;
    }[/code:1:cb75912ebc]

    voorbeeldje:
    [code:1:cb75912ebc]$eerste_tekens = "<p>Dit is een bericht wat langer is dan 255 tekens en afgekapt wordt midden in een <a href=index.html>link";

    $eerste_tekens = powerStrip($eerste_tekens);[/code:1:cb75912ebc]

    eerste_tekens bevat nu:
    Dit is een bericht wat langer is dan 255 tekens en afgekapt wordt midden in een link

    Bijdrager
    rulus

    Die eerste van scriptman doet hier toch?

    Dit
    [code:1:572d0800fc]After the launch of <a class="tlink" href="http://www.ubuntu.org/">Ubuntu 6.06 LTS</a>, Canonical is pleased to announce the availability of Opera 9 for Ubuntu.[/code:1:572d0800fc]
    wordt

    After the launch of Ubuntu 6.06 LTS, Canonical is pleased to announce the availability of Opera 9 for Ubuntu. With just a few clicks of the mouse, all Ubuntu users can do …

    Ik hoef in dat kleine stukje geen links te hebben.

    Bijdrager
    scriptman
    ”rulus”

    Die eerste van scriptman doet hier toch?

    Dit
    [code:1:68f03765ea]After the launch of <a class="tlink" href="http://www.ubuntu.org/">Ubuntu 6.06 LTS</a>, Canonical is pleased to announce the availability of Opera 9 for Ubuntu.[/code:1:68f03765ea]
    wordt

    After the launch of Ubuntu 6.06 LTS, Canonical is pleased to announce the availability of Opera 9 for Ubuntu. With just a few clicks of the mouse, all Ubuntu users can do …

    Ik hoef in dat kleine stukje geen links te hebben.

    je bedoelt dat met strip_tags ?

    Bijdrager
    klaus

    Je zal allicht je heil moeten zoeken in gecompliceerde reguliere expressies. Tellen van alle tags (karakters) die eruit zullen gehaald worden, en dit optellen bij je max aantal karakters die toegelaten zijn. Dat getal dan gebruiken voor je substring.

    Bijdrager
    scriptman

    Ik heb even getest en het kan ook heel goed met de php strip_tags functie!

    Voorbeeld string:
    [code:1:5e25819da9]Dit is <a href="index.html">een test</a> dus <b>even</b> testen <img src="[/code:1:5e25819da9]

    Dat wordt:
    [code:1:5e25819da9]Dit is <a href="index.html">een test</a> dus <b>even</b> testen[/code:1:5e25819da9]

    gebruik deze code:
    [code:1:5e25819da9]$blogtext = strip_tags($blogtext,"<a><b><i><u><img>");[/code:1:5e25819da9]

    de elementen die in de functie staan blijven in de string, tenzij ze niet correct eindigen, dan worden ze eruit gehaald!

    Bijdrager
    DarkRaverNL

    Ik heb het even uitgeprobeerd, maar het schijnt niet te werken, mis ik nog wat ?

    [code:1:772b7f56c6] $blogtext = $row["content"];
    $limit = limit_text($blogtext,600);
    $text = strip_tags($limit,"<a><b><i><u><img>");[/code:1:772b7f56c6]

    Bijdrager
    rulus
    ”scriptman”

    (…)

    je bedoelt dat met strip_tags ?

    ja die bedoel ik

    Bijdrager
    scriptman
    ”DarkRaverNL”

    Ik heb het even uitgeprobeerd, maar het schijnt niet te werken, mis ik nog wat ?

    [code:1:ddb19e4fe9] $blogtext = $row["content"];
    $limit = limit_text($blogtext,600);
    $text = strip_tags($limit,"<a><b><i><u><img>");[/code:1:ddb19e4fe9]

    de tags die daar staan tussen die quotes blijven er dus WEL in tenzij ze niet correct afgesloten zijn

    als je alle tags weg wilt voldoet dit:
    [code:1:ddb19e4fe9]text = strip_tags($limit);[/code:1:ddb19e4fe9]

    Bijdrager
    DarkRaverNL

    Nvm het werkt nu, ik dacht dat “<b>” etc de tags waren die hij er juist uit haalt, maar dat waren degene die erin bleven, dus hier mijn code:

    [code:1:491ee5798e]
    $blogtext = $row["content"];
    $strip = strip_tags($blogtext);
    $blog_result = limit_text($strip,600);[/code:1:491ee5798e]

    Dankje Joost.

14 berichten aan het bekijken - 1 tot 14 (van in totaal 14)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.