I have a PHP variable that contains a string which represents an XML structure. This string contains ilegal characters that dont let me build a new SimpleXMLElement object f
While it's probably not the primary target of your question, please have a look at PHP's filter functions: http://www.php.net/manual/en/intro.filter.php
Filter functions validate and sanitize values. Form the PHP site:
$a = 'joe@example.org';
$b = 'bogus - at - example dot org';
$c = '(bogus@example.org)';
$sanitized_a = filter_var($a, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_a, FILTER_VALIDATE_EMAIL)) {
echo "This (a) sanitized email address is considered valid.\n";
}
$sanitized_b = filter_var($b, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_b, FILTER_VALIDATE_EMAIL)) {
echo "This sanitized email address is considered valid.";
} else {
echo "This (b) sanitized email address is considered invalid.\n";
}
$sanitized_c = filter_var($c, FILTER_SANITIZE_EMAIL);
if (filter_var($sanitized_c, FILTER_VALIDATE_EMAIL)) {
echo "This (c) sanitized email address is considered valid.\n";
echo "Before: $c\n";
echo "After: $sanitized_c\n";
}
Result:
This (a) sanitized email address is considered valid.
This (b) sanitized email address is considered invalid.
This (C) sanitized email address is considered valid.
Before: (bogus@example.org)
After: bogus@example.org
trim() will also remove null characters, from either end of the source string (but not within).
$text = trim($text);
I've found this useful for socket server communication, especially when passing JSON around, as a null character causes json_decode() to return null.
$text = str_replace("\0", "", $text);
will replace all null characters in the $text
string. You can also supply arrays for the first two arguments, if you want to do multiple replacements.