|
| 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
| |
|
|