/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Afkort resultat af regulært udtryk
Fra : Kasper Johansen


Dato : 11-02-05 18:03

Hej gruppe.

Jeg har skrevet følgende script til at gøre mine links til "rigtige"
links (<a href="... osv.).

Det er skrevet som følger:


$pattern = "/(www[.]|http:\/\/|ftp:\/\/)(www.|)([\w-\.]+)\.(\w{2,3})?\S*/";
$replacewith = "<a target=\"_blank\" href=\"\$0\">\$0</a>";
$test = preg_replace($pattern, $replacewith, $test);


Desværre opstår der stadig et problem hvis en bruger nu poster et link,
som er 300 karrakterer langt. Mine tables bliver udvidet og mit design
ødelagt.

Min løsning har indtil nu været at køre det hele igennem
"preg_match_all" i stedet, men det betyder at der skal udføres
betydeligt mere kode, i stedet for at gøre det direkte ved hjælp af mit
regulære udtryk.

Mit spørgsmål er derfor:

Er det muligt at fortælle det regulære udtryk, at hvis resultatet af
dets søgen er 35 eller flere karraktere langt, skal det afkortes og
erstattes af "..." i stedet??


--
Mvh Kasper Johansen
www.partyworm.dk - www.wc3replays.net

 
 
zigma.dk (12-02-2005)
Kommentar
Fra : zigma.dk


Dato : 12-02-05 01:46

> $pattern = "/(www[.]http:\/\/ftp:\/\/)(www.)([\w-\.]+)\.(\w{2,3})?\S*/";
> $replacewith = "<a target=\"_blank\" href=\"\$0\">\$0</a>";
> $test = preg_replace($pattern, $replacewith, $test);

> Desværre opstår der stadig et problem hvis en bruger nu poster et link,
> som er 300 karrakterer langt. Mine tables bliver udvidet og mit design
> ødelagt.

> Er det muligt at fortælle det regulære udtryk, at hvis resultatet af
> dets søgen er 35 eller flere karraktere langt, skal det afkortes og
> erstattes af "..." i stedet??

Ja, absolut :)

du kan bruge funktionen substr($string,$start,$length)

Et eksempelt på funktionen:

$string="Dette er min tekst";
echo substr($string,"0","7");

// Output: "Dette e"

Derfor kan du vælge at skrive noget i stil:
if(strlen($string)>34){
$string=substr($string,"0","35") . "...";
}

echo $string;

// Output: [de første 35 tegn]...

Håber det kan bruges =)

// Zigma




--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Kasper Johansen (27-02-2005)
Kommentar
Fra : Kasper Johansen


Dato : 27-02-05 13:07

zigma.dk wrote:

>> $pattern =
"/(www[.]http:\/\/ftp:\/\/)(www.)([\w-\.]+)\.(\w{2,3})?\S*/";
>> $replacewith = "<a target=\"_blank\" href=\"\$0\">\$0</a>";
>> $test = preg_replace($pattern, $replacewith, $test);


> $string="Dette er min tekst";
> echo substr($string,"0","7");
>
> // Output: "Dette e"
>
> Derfor kan du vælge at skrive noget i stil:
> if(strlen($string)>34){
> $string=substr($string,"0","35") . "...";
> }
>
> echo $string;


Mit spørgsmål var om at man kunne afkorte direkte i det regulære udtryk,
og ikke via PHP.

Ved ikke om der er en nyhedsgruppe til regulære udtryk, men jeg kunne
ikke finde nogen, derfor spørger jeg her.

--
Mvh Kasper Johansen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste