30. juni 2007 - 10:09
Der er
9 kommentarer og 1 løsning
stripslashes function
Jeg prøver på at lave en funktion som skal checke om en string indeholder espace slashes, men jeg oplever noget jeg ikke helt kan finde ud af.. Jeg har lavet nedenstående kode: echo $str.'<br>'; echo '\' = '.count(explode('\'', $str)); echo '<br>'; echo '\\\' = '.count(explode('\\\'', $str)); echo '<br><br>'; $str = str_replace('\\\'', '', $str); echo $str.'<br>'; echo '" = '.count(explode('"', $str)); echo '<br>'; echo '\" = '.count(explode('\"', $str)); echo '<br><br>'; $str = str_replace('\"', '', $str); echo $str.'<br>'; echo '\\ = '.count(explode('\\', $str)); echo '<br>'; echo '\\\\ = '.count(explode('\\\\', $str)); echo '<br><br>'; $str = str_replace('\\\\', '', $str); - som udskriver følgende: hej \'du \"hehe \\dd ' = 2 \' = 2 hej du \"hehe \\dd " = 2 \" = 2 hej du hehe \\dd \ = 3 \\ = 2 hej du hehe dd Hvorfor tæller den 3 ved \? Burde den ikke kun tælle 2?
Annonceindlæg fra Kommando
eller spurgt på en anden måde.. hvordan kan man få den til at tælle "rigtigt"?
Du tæller ikke "\"-er med explode, men områderne omkring 1\2\3 giver et array med 3 elementer, "1", "2", "3", og dermed en count på 3.
det ved jeg godt, men sådan lige den nemmeste måde jeg kunne se uden at rode sig ud i noget preg :)
Joh, måske ... Men du skal så bare trække én fra, for at få det rigtige tal.
det var jo lige den funktion jeg skulle have fat i :) hvordan er det så muligt at tilføje en NULL byte i min funktion? nu har jeg ', " og \ function str_stripslashes($str) { $ref = $str; $strip = 0; if(substr_count($ref, '\'')) { if(substr_count($ref, '\'') == substr_count($ref, '\\\'')) { $ref = str_replace('\\\'', '', $ref); $strip = 1; } else $strip = 0; } if(substr_count($ref, '"')) { if(substr_count($ref, '"') == substr_count($ref, '\"')) { $ref = str_replace('\"', '', $ref); $strip = 1; } else $strip = 0; } if(substr_count($ref, '\\')) { if((substr_count($ref, '\\') / 2) == substr_count($ref, '\\\\')) { $ref = str_replace('\\\\', '', $ref); $strip = 1; } else $strip = 0; } if($strip) $str = stripslashes($str); return $str; }
Du ønsker at tælle NULL bytes også ??
jeg ved ikke om det nogensinde vil blive nødvendigt?
Ikke ved normalt input fra en almindelig bruger. Ellers skal du vel bare finde dem: "\x00"
01. juli 2007 - 16:00
#10
tak for hjælpen, erik :)
Vi tilbyder markedets bedste kurser inden for webudvikling