Mailinglisten-Archive |
Hi Roland, und mal wieder Antworte ich mir selbst :-) Für den Fall, dass mal jemand vor einem ähnlichen Problem steht: /** * This function will parse a string like the php-interpreter would do. * In double quotes, \n will become a newline, \r a carriage return, \" * a double quote. In single quotes, \' will become '. * You can use \\ to get a single backslash. * * Written by Roland Tapken <r.tapken at icreatix.net>. */ function parsestring($str) { // Active quoting modes... $quotesingle = false; $quotedouble = false; $backslash = false; $strlen = strlen($str); $newstr = ''; for ($pos = 0; $pos < $strlen; $pos++) { $char = substr($str, $pos, 1); if ($backslash) { if ($quotesingle) { // Singlequotes will not parse for special characters... // The only escapable chars ar ' and \. $newstr .= ($char == '\\' || $char == '\'') ? $char : '\\'.$char; } else { // Find some special characters... switch ($char) { case 'n': $newstr .= "\n"; break; case 'r': $newstr .= "\r"; break; case 't': $newstr .= "\t"; break; case '"': $newstr .= '"'; break; default: $newstr .= "\\".$char; // Not an escapable character } } $backslash = false; } else { // Find normal or escape characters switch ($char) { case '"': if ($quotesingle) { $newstr .= $char; break; } $quotedouble = !$quotedouble; break; case "'": if ($quotedouble) { $newstr .= $char; break; } $quotesingle = !$quotesingle; break; case '\\': $backslash = true; break; default: $newstr .= $char; } } } if ($quotesingle || $quotedouble || $backslash) return false; // Unexpected end of string else return $newstr; } Bye, Roland -- Es ist schon über so viele Sachen Graß gewachsen, dass man bald keiner Wiese mehr trauen kann!
php::bar PHP Wiki - Listenarchive