Avatar billede supermand69 Nybegynder
29. oktober 2006 - 10:40 Der er 10 kommentarer og
2 løsninger

str_replace \n

når jeg laver en str_replace kommer der et ? frem før hver \n

hvorfor gør der det?

eks.

input string:
-----------
'musik sammen."

Det samme gælde'

kode:
----------
str_replace("\n", '\n', addslashes($value))

output str:
------------
'musik sammen.\"?\n?\nDet samme gælde'
Avatar billede nielle Nybegynder
29. oktober 2006 - 11:00 #1
Det er muligvis det \r der som regel følger et \n der driller. Prøv med:

str_replace("\r\n", '\r\n', addslashes($value))
Avatar billede supermand69 Nybegynder
29. oktober 2006 - 11:17 #2
har allerede fra start slettet \r :)
Avatar billede zynzz Praktikant
29. oktober 2006 - 12:14 #3
prøv:

str_replace("\n", "<br>", $dintekst);
Avatar billede supermand69 Nybegynder
29. oktober 2006 - 13:04 #4
jeg skal ikke bruge <br>
Avatar billede apocalyptica_apo Nybegynder
29. oktober 2006 - 16:47 #5
Hmm, hvilken version kører du og gør du noget ved $value før str_replace.
Hvis Ja, hvad og hvordan.
Jeg har lige prøvet følgene på min IIS/PHP_5.1.4:
-------------
$value = 'musik sammen."

Det samme gælde';
$value = str_replace("\r", "", $value);
$value = str_replace("\n", '\n', addslashes($value));
echo $value;

Hvilket giver:
'musik sammen.\"\n\nDet samme gælde'
Uden '$value = str_replace("\r", "", $value);' får jeg:
'musik sammen.\" \n \nDet samme gælde'

Så er du sikker på at den \r er væk ?
Avatar billede supermand69 Nybegynder
29. oktober 2006 - 17:16 #6
$get_row = mysql_query("SELECT * FROM $DB.".$table_arr['Name']);
        if(mysql_num_rows($get_row))
        {
            $tmp2_arr = array();
           
            $str .= "\nINSERT `".$table_arr['Name']."` (".implode(',', $field_arr).") VALUES\n";
           
            while($row_arr = mysql_fetch_row($get_row))
            {
                $tmp_arr = array();
               
                foreach($row_arr as $value)
                {
                    if(is_numeric($value)) $tmp_arr[] = $value;
                    else $tmp_arr[] = "'".str_replace("\n", '\n', addslashes($value))."'";
                }
               
                $tmp2_arr[] = "(".implode(',', $tmp_arr).")";
            }
           
            $str .= implode(",\n", $tmp2_arr).";\n";
        }
Avatar billede supermand69 Nybegynder
29. oktober 2006 - 17:19 #7
fuck.. sorry :p

jeg sidder og tåger

troede lige jeg havde kørt den igennem den her først
$str = str_replace("\r", '', $str);

nielle og apo > lav et svar
Avatar billede nielle Nybegynder
29. oktober 2006 - 17:22 #8
Svar :^)
Avatar billede supermand69 Nybegynder
29. oktober 2006 - 17:32 #9
men en anden ting.. hvis et input bliver sendt fra en mac er det vel kun \r der bruges som newline?
Avatar billede supermand69 Nybegynder
29. oktober 2006 - 17:33 #10
så man burde vel gøre sådan her for at være helt sikker på at man får sine newlines med?

$str = str_replace("\r\n", '\n', $str);
$str = str_replace("\r", '\n', $str);
Avatar billede nielle Nybegynder
29. oktober 2006 - 19:14 #11
... endnu en ting ... hvis indput sendet fra en Linux/Unix box, sår er det muligvis kun \n der sendes:

Max (OX X) - \r
*nux - \n
Windows - \r\n

Altså:

$str = str_replace("\r\n", '\n', $str);
$str = str_replace("\r", '\n', $str);
$str = str_replace("\n", '\n', $str);
Avatar billede apocalyptica_apo Nybegynder
30. oktober 2006 - 10:11 #12
Ye
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