/ 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
Erstat mere end 3 ens i tr?k med kun 3 stk
Fra : Niels Andersen


Dato : 19-09-02 12:08

Hvis folk fx. skriver:

HHHHHHHHHHHHHHHHEEEEEEEEEEEEEEEEEEEEEEJJJJJJJJJJJJJJJ!!!!!!!!!!!!!
eller
Nej!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

så vil jeg gerne have det ændret til:
HHHEEEJJJ!!!
og

Nej!!!

Der er vist aldrig grund til at skrive det samme tegn mere end tre gange i
træk, men folk gør det ofte alligevel.

Man kunne tage det ét tegn af gangen, men jeg vil da hellere gøre noget
smartere. Men min fantasi rækker desværre ikke til det.

Er der nogen der kan komme med en funktion eller en preg_replace(), eller
måske bare inspiration til en løsning?

--
Mvh.

Niels Andersen
(la nels. anersyn.)

 
 
Peter Brodersen (19-09-2002)
Kommentar
Fra : Peter Brodersen


Dato : 19-09-02 12:29

On Thu, 19 Sep 2002 13:08:02 +0200, Niels Andersen
<niels-usenet@myplace.dk> wrote:

>Er der nogen der kan komme med en funktion eller en preg_replace(), eller
>måske bare inspiration til en løsning?

preg_replace('_((.)\\2\\2)\\2+_','\\1',$tekst);

Eksempel: http://stock.ter.dk/larm
--
- Peter Brodersen

Niels Andersen (19-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 19-09-02 13:14

Peter Brodersen wrote in <amccd1$97f$1@dknews.tiscali.dk>:
>>Er der nogen der kan komme med en funktion eller en preg_replace(), eller
>>måske bare inspiration til en løsning?
>
> preg_replace('_((.)\\2\\2)\\2+_','\\1',$tekst);
>
> Eksempel: http://stock.ter.dk/larm

Perfekt! :)

I får lige hele funktionen, som den ser ud lige nu:

function str_reformat($string) {
$patterns = array(
'/ {2,}/',
'/^ */m',
'/ *$/m',
"/\r\n/",
"/\r/",
"/\n{3,}/",
'/((.)\\2\\2)\\2+/',
);
$replacements = array(
' ',
'',
'',
"\n",
"\n",
"\n\n",
'$1',
);
$string = preg_replace($patterns, $replacements, $string);
if ($string == strtoupper($string)) {
$string = strtolower($string);
$string = str_replace(array('Æ','Ø','Å'), array('æ','ø','å'), $string);
}
return $string;
}

Bemærk: Jeg har valgt at bruge et beskidt hack til ÆØP, i stedet for at
sætte locale. Det er ikke perfekt, men til gengæld virker det uanset
locale-bøvl på serveren.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Morten Winther (19-09-2002)
Kommentar
Fra : Morten Winther


Dato : 19-09-02 21:11


"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
news:Ycji9.5755$Qk5.314352@news010.worldonline.dk...
> Peter Brodersen wrote in <amccd1$97f$1@dknews.tiscali.dk>:
> >>Er der nogen der kan komme med en funktion eller en preg_replace(),
eller
> >>måske bare inspiration til en løsning?
> >
> > preg_replace('_((.)\\2\\2)\\2+_','\\1',$tekst);
> >
> > Eksempel: http://stock.ter.dk/larm
>
> Perfekt! :)
>
> I får lige hele funktionen, som den ser ud lige nu:
>
> function str_reformat($string) {
> $patterns = array(
> '/ {2,}/',
> '/^ */m',
> '/ *$/m',

Hvad fanger disse 2:

'/^ */m',
'/ *$/m',

/ morten



Peter Brodersen (19-09-2002)
Kommentar
Fra : Peter Brodersen


Dato : 19-09-02 21:11

On Thu, 19 Sep 2002 22:10:46 +0200, "Morten Winther" <news@mwi.dk>
wrote:

> '/^ */m',
> '/ *$/m',

Alle mellemrum i hhv. starten og slutningen af hver linje (pga.
m-flaget).

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408659
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste