Avatar billede sylvesternielsen Nybegynder
11. januar 2004 - 20:51 Der er 6 kommentarer og
1 løsning

ereg_replace ell.

Jeg skal bruge et script som erstatter alle , til <komma> når det står imellem ,"" og ""

Hvordan laver jeg dette?
Avatar billede sylvesternielsen Nybegynder
11. januar 2004 - 20:53 #1
her er et eksempel på en streng det skal bruges på:
5="3,Domæne,1100,1,stk.,""120,00"",,""30,00"",""120,00"",""150,00""","10,""Webhosting 1"",1400,12,Måned,""30,00"",""280,00"",""20,00"",""80,00"",""100,00"""
Avatar billede eagleeye Praktikant
11. januar 2004 - 22:20 #2
Det kan gøres sådan her med preg_replace:

<?
$str = '5="3,Domæne,1100,1,stk.,""120,00"",,""30,00"",""120,00"",""150,00""","10,""Webhosting 1"",1400,12,Måned,""30,00"",""280,00"",""20,00"",""80,00"",""100,00"""';

$pattern = '/(,""\d+),(\d+"")/';
$replacement = "\$1<komma>\$2";
$str = preg_replace($pattern,$replacement,$str);

$str = htmlentities("$str", 0, "");
echo $str;
?>

Grunden til denne linje:
$str = htmlentities("$str", 0, "");
er udelukket fordi <komma> vil forsvinde i browseren når man udskriver (IE vil fjerne det) det er dog stadig i view source.
Avatar billede sylvesternielsen Nybegynder
12. januar 2004 - 00:33 #3
Helt perfekt..
kan du fortælle mig hvordan jeg splitter en streng på det 10 komma i strengen også?

Og smider du lige et svar så du kan få point
Avatar billede eagleeye Praktikant
12. januar 2004 - 19:09 #4
Kan den spilte på 10," ?
Er det så altid 10 eller kan det være et andet tal?

man kunne evt i stil med at sætte <komma> ind sætte <spilt> ind??
Avatar billede eagleeye Praktikant
12. januar 2004 - 20:04 #5
Arh ikke 10, men DET 10'ne komma eller?
Avatar billede eagleeye Praktikant
12. januar 2004 - 20:32 #6
Så vidt jeg kan se vil det være sådan ved det 10'ne komma: ""","
Så det kan man søge på sådan her så den delt ud i $str1 og $str2 variablerne:

<?
$str = '5="3,Domæne,1100,1,stk.,""120,00"",,""30,00"",""120,00"",""150,00""","10,""Webhosting 1"",1400,12,Måned,""30,00"",""280,00"",""20,00"",""80,00"",""100,00"""';

$pattern = '/(,""\d+),(\d+"")/';
$replacement = "\$1<komma>\$2";
$str = preg_replace($pattern,$replacement,$str);

$thispos = strpos($str, '""","', 0);
$str1 = substr($str,0,$thispos+3);
$str2 = substr($str,$thispos+4);

echo htmlentities($str1)."<br>".htmlentities($str2);
?>
Avatar billede eagleeye Praktikant
12. januar 2004 - 20:34 #7
Alternativt skal du lave et det sådan her igen er den delt i to varialbe $str1 og $str2. Denne søger igennem strenge og stopper når den når det 10'ne komma:

<?
$str = '5="3,Domæne,1100,1,stk.,""120,00"",,""30,00"",""120,00"",""150,00""","10,""Webhosting 1"",1400,12,Måned,""30,00"",""280,00"",""20,00"",""80,00"",""100,00"""';

$pattern = '/(,""\d+),(\d+"")/';
$replacement = "\$1<komma>\$2";
$str = preg_replace($pattern,$replacement,$str);

$offset = 0;
for($i=0; $i<10; ++$i) {
  $thispos = strpos($str, ",", $offset);
  $offset = $thispos + 1;
}
$str1 = substr($str,0,$thispos);
$str2 = substr($str,$thispos+1);

echo htmlentities($str1)."<br>".htmlentities($str2);
?>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester