diff --git a/modules/path.eval.inc b/modules/path.eval.inc
index bfef75e..c662dfb 100644
--- a/modules/path.eval.inc
+++ b/modules/path.eval.inc
@@ -97,6 +97,16 @@ function rules_clean_path($path) {
  */
 function rules_path_default_cleaning_method($path) {
   $replace = variable_get('rules_path_replacement_char', '-');
+  if (module_exists('ctools')) {
+    // CTools has a more robust implementation of cleanstring, so use it.
+    ctools_include('cleanstring');
+    $settings = array(
+      'separator' => $replace,
+      'transliterate' => module_exists('transliteration') && variable_get('rules_path_transliteration', TRUE),
+    );
+    return ctools_cleanstring($path, $settings);
+  }
+
   if ($replace) {
     // If the transliteration module is enabled, transliterate the alias first.
     if (module_exists('transliteration') && variable_get('rules_path_transliteration', TRUE)) {
