-
Q:
[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?
”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?
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 ?
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 linkDie 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]
wordtAfter 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.
”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]
wordtAfter 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 ?
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!
”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]
Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.