|
| Vis kun X antal karakterer. Fra : Rigor Mortis |
Dato : 31-05-04 20:17 |
|
På http://mbn.dk/?aid=44 har jeg fundet en function:
function cut_text($str, $size=5) {
settype($size, "integer");
$str = preg_replace("/^(.{".$size."}).*$/", "1...", $str);
return $str;
}
Det var så vist meningen at:
"hej med dig"
skulle blive til:
"Hej m..."
Men istedet bliver det til:
"1..."
Hvad går galt?
--
Rigor
| |
Thomas Lindgaard (31-05-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 31-05-04 21:00 |
|
On Mon, 31 May 2004 21:17:09 +0200, Rigor Mortis wrote:
> function cut_text($str, $size=5) {
>
> settype($size, "integer");
>
> $str = preg_replace("/^(.{".$size."}).*$/", "1...", $str);
>
> return $str;
>
> }
>
> Det var så vist meningen at:
>
> "hej med dig"
>
> skulle blive til:
>
> "Hej m..."
>
> Men istedet bliver det til:
>
> "1..."
Det dér ettal skulle vist være en back reference - så der mangler \\
foran, altså:
preg_replace("/^(.{".$size."}).*$/", "\\1...", $str);
Egentlig tror jeg at funktionen kan skrives lidt simplere:
function cut_text($str, $size=5)
{
return preg_replace("/^(.{".$size."}).*$/", "\\1...", $str);
}
Utestet - men jeg skulle mene at resultatet vil blive det samme.
Mvh.
/Thomas
| |
Johan Holst Nielsen (01-06-2004)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 01-06-04 09:54 |
|
Thomas Lindgaard wrote:
> On Mon, 31 May 2004 21:17:09 +0200, Rigor Mortis wrote:
>
>
>> function cut_text($str, $size=5) {
>>
>> settype($size, "integer");
>>
>> $str = preg_replace("/^(.{".$size."}).*$/", "1...", $str);
>>
>> return $str;
>>
>> }
>>
>>Det var så vist meningen at:
>>
>>"hej med dig"
>>
>>skulle blive til:
>>
>>"Hej m..."
>>
>>Men istedet bliver det til:
>>
>>"1..."
>
>
> Det dér ettal skulle vist være en back reference - så der mangler \\
> foran, altså:
>
> preg_replace("/^(.{".$size."}).*$/", "\\1...", $str);
>
> Egentlig tror jeg at funktionen kan skrives lidt simplere:
>
> function cut_text($str, $size=5)
> {
> return preg_replace("/^(.{".$size."}).*$/", "\\1...", $str);
> }
>
> Utestet - men jeg skulle mene at resultatet vil blive det samme.
Kan ikke lige se nogen grund til det skal være reg. exp. i dette
tilfælde? Hvorfor ikke blot
function cut_text($str,$size=5) {
return substr($str,0,$size)."...";
}
?
mvh
Johan
| |
Lars Olesen (01-06-2004)
| Kommentar Fra : Lars Olesen |
Dato : 01-06-04 11:34 |
|
Johan Holst Nielsen wrote:
> Kan ikke lige se nogen grund til det skal være reg. exp. i dette
> tilfælde? Hvorfor ikke blot
>
> function cut_text($str,$size=5) {
> return substr($str,0,$size)."...";
> }
Så kan jeg ikke se, hvorfor du ikke bare bruger:
substr("Hej med dig", 5);
Altså bare brug php's egen funktion til at gøre det med :)
--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på < http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004
| |
Thomas Lindgaard (01-06-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 01-06-04 14:54 |
|
On Tue, 01 Jun 2004 12:33:46 +0200, Lars Olesen wrote:
>> function cut_text($str,$size=5) {
>> return substr($str,0,$size)."...";
>> }
>
> Så kan jeg ikke se, hvorfor du ikke bare bruger:
>
> substr("Hej med dig", 5);
>
> Altså bare brug php's egen funktion til at gøre det med :)
Hejsa
Det skal naturligvis bare være en substr-ting frem for noget reg.exp.
(jeg havde vist lige set mig blind...) - men
substr($text, $size);
er forkert: Det returnerer fra $size'te bogstav og frem. Det rigtige må
være at bruge Johans funktion.
Mvh.
/Thomas
| |
Lars Olesen (01-06-2004)
| Kommentar Fra : Lars Olesen |
Dato : 01-06-04 22:52 |
|
Thomas Lindgaard wrote:
> Det skal naturligvis bare være en substr-ting frem for noget reg.exp.
> (jeg havde vist lige set mig blind...) - men
>
> substr($text, $size);
>
> er forkert: Det returnerer fra $size'te bogstav og frem. Det rigtige må
> være at bruge Johans funktion.
Jep, naturligvis. Skulle være substr("hej med dig", 0,5) :) Men pointen
er, at det ikke bør smides i en funktion, men man bør bruge PHP's
funktion direkte!
--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på < http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004
| |
Thomas Lindgaard (02-06-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 02-06-04 00:09 |
|
On Tue, 01 Jun 2004 23:52:01 +0200, Lars Olesen wrote:
> Men pointen er, at det ikke bør smides i en funktion, men man bør
> bruge PHP's funktion direkte!
Ahh det var det du mente med at bruge PHP's funktion direkte.
Alt efter hvor mange gange man skal bruge funktionen så kunne der måske
være en ide i at bruge cut_size - den sætter jo de afsluttende ... på -
og så er man lidt fremtidssikret så fremt i fald man senere skulle få
lyst til at vise 6 tegn frem for kun 5 :)
Mvh.
/Thomas
| |
Lars Olesen (02-06-2004)
| Kommentar Fra : Lars Olesen |
Dato : 02-06-04 05:59 |
|
Thomas Lindgaard wrote:
> Alt efter hvor mange gange man skal bruge funktionen så kunne der måske
> være en ide i at bruge cut_size - den sætter jo de afsluttende ... på -
> og så er man lidt fremtidssikret så fremt i fald man senere skulle få
> lyst til at vise 6 tegn frem for kun 5 :)
Du har ret :)
--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på < http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004
| |
Johan Holst Nielsen (02-06-2004)
| Kommentar Fra : Johan Holst Nielsen |
Dato : 02-06-04 08:53 |
|
Lars Olesen wrote:
> Thomas Lindgaard wrote:
>
>> Det skal naturligvis bare være en substr-ting frem for noget reg.exp.
>> (jeg havde vist lige set mig blind...) - men
>> substr($text, $size);
>>
>> er forkert: Det returnerer fra $size'te bogstav og frem. Det rigtige må
>> være at bruge Johans funktion.
>
>
> Jep, naturligvis. Skulle være substr("hej med dig", 0,5) :) Men pointen
> er, at det ikke bør smides i en funktion, men man bør bruge PHP's
> funktion direkte!
Det var mere i tilfælde af han brugte funktionen 2000 steder på sit
website med den nuværende konstruktion - så kunne man vælge en replace -
som kunne få galt - eller bare lade funktionen outputte det man ønsker
på en simplere måde :)
Men enig - hvis det er i et tilfælde hvor der _kun_ er et sted dette
sker - så ser jeg ingen problemer i ikke at putte det i en funktion -
tværtimod.
mvh
Johan
| |
Kristian Thy (01-06-2004)
| Kommentar Fra : Kristian Thy |
Dato : 01-06-04 22:53 |
|
Lars Olesen uttered:
>> function cut_text($str,$size=5) {
>> return substr($str,0,$size)."...";
>> }
>
> Så kan jeg ikke se, hvorfor du ikke bare bruger:
>
> substr("Hej med dig", 5);
>
> Altså bare brug php's egen funktion til at gøre det med :)
Fordi OP gerne vil have "..." sat på strengen hvis den er afkortet.
\\kristian
--
"The brain is a wonderful organ. It starts working the moment you get
up in the morning and does not stop until you get into the office."
--Robert Frost
| |
Lars Olesen (02-06-2004)
| Kommentar Fra : Lars Olesen |
Dato : 02-06-04 06:00 |
|
Kristian Thy wrote:
> Fordi OP gerne vil have "..." sat på strengen hvis den er afkortet.
Jep, det er rigtigt, men det kommer nu stadig an på, hvor mange gange
funktionen skal bruges, synes jeg :)
--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på < http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004
| |
Jacob Atzen (02-06-2004)
| Kommentar Fra : Jacob Atzen |
Dato : 02-06-04 09:44 |
|
Lars Olesen <lsolesen@hotmail.com> writes:
> Jep, det er rigtigt, men det kommer nu stadig an på, hvor mange gange
> funktionen skal bruges, synes jeg :)
Ikke enig. Det kommer an på læsbarheden af koden. Hvis koden bliver
mere læsbar af at smide noget i en funktion så gør det, også selvom
det er trivielt, det der bliver flyttet over i funktionen. Fordelen
ved at gøre det på denne måde er, at du kan navngive funktionen til at
afspejle præcis, hvad det er der foregår.
Martin Fowlers "Refactoring" har rigtig mange gode pointer om lige
netop denne problemstilling.
--
Med venlig hilsen
- Jacob Atzen
| |
Lars Olesen (02-06-2004)
| Kommentar Fra : Lars Olesen |
Dato : 02-06-04 09:58 |
|
Jacob Atzen wrote:
>>Jep, det er rigtigt, men det kommer nu stadig an på, hvor mange gange
>>funktionen skal bruges, synes jeg :)
>
> Ikke enig. Det kommer an på læsbarheden af koden. Hvis koden bliver
> mere læsbar af at smide noget i en funktion så gør det, også selvom
> det er trivielt, det der bliver flyttet over i funktionen. Fordelen
> ved at gøre det på denne måde er, at du kan navngive funktionen til at
> afspejle præcis, hvad det er der foregår.
Well, det er naturligvis en god pointe! Må nok hellere tage i Fowlers bog :)
--
Lars Olesen
Kan det gøres bedre? Struktur, navigation og brugervenlighed!
Betingelser findes på < http://www.fodboldenslegestue.dk>
Forslag afleveres inden 1. juli 2004
| |
Martin Geisler (01-06-2004)
| Kommentar Fra : Martin Geisler |
Dato : 01-06-04 10:44 |
|
"Rigor Mortis" <rigor@12mail.dk> writes:
> På http://mbn.dk/?aid=44 har jeg fundet en function:
>
> function cut_text($str, $size=5) {
>
> settype($size, "integer");
>
> $str = preg_replace("/^(.{".$size."}).*$/", "1...", $str);
>
> return $str;
>
> }
Hvorfor dog gøre det ved hjælp af regulære udtryk når en simpel
substr() vil virke lige så godt og hurtigere? En mere simpel måde at
gøre det på kunne være:
<?php
function cut_text($str, $size = 5) {
if (strlen($str) > $size)
return substr($str, 0, $size-3) . '...';
else
return $str;
}
?>
Så bliver resultatet altid en streng med højst $size tegn, hvoraf de
sidste tre er '...' hvis strengen var for lang.
--
Martin Geisler My GnuPG Key: 0xF7F6B57B
PHP EXIF Library | PhpWeather | PhpShell
http://pel.sf.net/ | http://phpweather.net/ | http://gimpster.com/
Read/write EXIF data | Show current weather | A shell in a browser
| |
Rigor Mortis (02-06-2004)
| Kommentar Fra : Rigor Mortis |
Dato : 02-06-04 10:40 |
|
"Martin Geisler" <gimpster@gimpster.com> skrev i en meddelelse
news:87iseb3955.fsf@gimpster.sg.bnaa.dk...
> Hvorfor dog gøre det ved hjælp af regulære udtryk når en simpel
> substr() vil virke lige så godt og hurtigere? En mere simpel måde at
> gøre det på kunne være:
>
> <?php
> function cut_text($str, $size = 5) {
> if (strlen($str) > $size)
> return substr($str, 0, $size-3) . '...';
> else
> return $str;
> }
> ?>
>
> Så bliver resultatet altid en streng med højst $size tegn, hvoraf de
> sidste tre er '...' hvis strengen var for lang.
>
Tak for de mange ideer der er kommet i denne tråd.
Det blev denne jeg bruger. Og det fungerer godt.
--
Rigor
| |
Ulrik Nielsen (02-06-2004)
| Kommentar Fra : Ulrik Nielsen |
Dato : 02-06-04 11:35 |
|
Rigor Mortis wrote:
>
> Tak for de mange ideer der er kommet i denne tråd.
>
> Det blev denne jeg bruger. Og det fungerer godt.
selv om du siger at det er forsent, så kommer der liiige en til:
function sub_string($text, $maxTextLenght=128, $pad='...') {
$aspace=" ";
if(strlen($text) > $maxTextLenght ) {
$text = substr(trim($text),0,$maxTextLenght);
$text = substr($text,0,strlen($text)-strpos(strrev($text),$aspace));
$text = $text.$pad;
}
return $text;
}
Denne funktion sørger for ikke at "klippe" ord over.. hviklet godt kan
være en fordel... ;)
--
>> ulrik nielsen
excuse of the day : descramble code needed from software company
from bofh : http://www.cs.wisc.edu/~ballard/bofh/
| |
Jeppe Uhd (02-06-2004)
| Kommentar Fra : Jeppe Uhd |
Dato : 02-06-04 11:41 |
|
Rigor Mortis wrote:
> "Martin Geisler" <gimpster@gimpster.com> skrev i en meddelelse
> news:87iseb3955.fsf@gimpster.sg.bnaa.dk...
>> Hvorfor dog gøre det ved hjælp af regulære udtryk når en simpel
>> substr() vil virke lige så godt og hurtigere? En mere simpel måde at
>> gøre det på kunne være:
>>
>> <?php
>> function cut_text($str, $size = 5) {
>> if (strlen($str) > $size)
>> return substr($str, 0, $size-3) . '...';
>> else
>> return $str;
>> }
>>>
>>
>> Så bliver resultatet altid en streng med højst $size tegn, hvoraf de
>> sidste tre er '...' hvis strengen var for lang.
>>
>
>
> Tak for de mange ideer der er kommet i denne tråd.
>
> Det blev denne jeg bruger. Og det fungerer godt.
Og man kunne nok argumentere for en ternary operator...
function cut_text($str,$size=5)
{
return ((strlen($str)>$size)?(substr($str,0,$size-3).'...'):$str);
}
--
MVH Jeppe Uhd - NX http://nx.dk
Webhosting for nørder og andet godtfolk
| |
Jacob Atzen (02-06-2004)
| Kommentar Fra : Jacob Atzen |
Dato : 02-06-04 14:45 |
|
"Jeppe Uhd" <knewsnospam@nx.dk> writes:
> Og man kunne nok argumentere for en ternary operator...
>
> function cut_text($str,$size=5)
> {
> return ((strlen($str)>$size)?(substr($str,0,$size-3).'...'):$str);
> }
Så er man i alt fald sikker på det er ulæseligt
--
Med venlig hilsen
- Jacob Atzen
| |
Jonas Delfs (02-06-2004)
| Kommentar Fra : Jonas Delfs |
Dato : 02-06-04 20:33 |
|
"Rigor Mortis" <rigor@12mail.dk> skrev i en meddelelse
news:40bb8607$0$253$edfadb0f@dread16.news.tele.dk...
> På http://mbn.dk/?aid=44 har jeg fundet en function:
>
[snip]
>
> Det var så vist meningen at:
>
> "hej med dig"
>
> skulle blive til:
>
> "Hej m..."
Det lader til i har fundet en løsning på problemet, men da tekster man
ønsker beskåret tit kommer fra en db, skrev jeg engang dette:
http://delfs.dk/tricks.start.php
Måske du kan bruge det til noget...
--
Mvh. Jonas Delfs, http://delfs.dk
| |
|
|