]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Upgrade XML output scrubbing to better deal with newline and a few other chars
authorZach Copley <zach@status.net>
Mon, 1 Mar 2010 22:58:06 +0000 (14:58 -0800)
committerZach Copley <zach@status.net>
Wed, 3 Mar 2010 17:52:22 +0000 (09:52 -0800)
lib/util.php

index 8381bc63c0da254706de3129750fc83cbab5b2f6..f793cc10e9f28550823352e39fd2671def94c94a 100644 (file)
@@ -770,8 +770,28 @@ function common_shorten_links($text)
 
 function common_xml_safe_str($str)
 {
-    // Neutralize control codes and surrogates
-       return preg_replace('/[\p{Cc}\p{Cs}]/u', '*', $str);
+    // Replace common eol and extra whitespace input chars
+    $unWelcome = array(
+        "\t",  // tab
+        "\n",  // newline
+        "\r",  // cr
+        "\0",  // null byte eos
+        "\x0B" // vertical tab
+    );
+
+    $replacement = array(
+        ' ', // single space
+        ' ',
+        '',  // nothing
+        '',
+        ' '
+    );
+
+    $str = str_replace($unWelcome, $replacement, $str);
+
+    // Neutralize any additional control codes and UTF-16 surrogates
+    // (Twitter uses '*')
+    return preg_replace('/[\p{Cc}\p{Cs}]/u', '*', $str);
 }
 
 function common_tag_link($tag)