Index: formatting.php
===================================================================
--- formatting.php	(revision 15376)
+++ formatting.php	(working copy)
@@ -2829,4 +2829,31 @@
        return str_replace( 'Wordpress', 'WordPress', $text );
 }
 
+/**
+ * Apply capital_P_dangit() to just regular content.
+ *
+ * @since 3.0.1
+ * @uses wp_filter_cdata_content(), capital_P_dangit()
+ */
+function wp_capital_P_content( $str ) {
+       return wp_filter_cdata_content( $str, 'capital_P_dangit' );
+}
+
+/**
+ * Callback function which will only filter content *between* HTML tags, and
+ * should ignore data in attributes (such as URLs)
+ * 
+ * @since 3.0.1
+ */
+function wp_filter_cdata_content( $content, $filter = null ) {
+	if ( function_exists( $filter ) ) {
+	        // Yes, this is ugly. For the sake of being reusable.
+		$content = preg_replace_callback( '/(?(?<=>)|\A)([^<>]+)(?(?=<)|\Z)/s', create_function( '$matches', 'return call_user_func('."'$filter'".', $matches[1]);' ), $content );
+	}
+
+	return $content;
+}
+
+
+
 ?>
Index: default-filters.php
===================================================================
--- default-filters.php	(revision 15376)
+++ default-filters.php	(working copy)
@@ -88,7 +88,7 @@
 
 // Format WordPress
 foreach ( array( 'the_content', 'the_title', 'comment_text' ) as $filter )
-	add_filter( $filter, 'capital_P_dangit' );
+	add_filter( $filter, 'wp_capital_P_content' );
 
 // Format titles
 foreach ( array( 'single_post_title', 'single_cat_title', 'single_tag_title', 'single_month_title', 'nav_menu_attr_title', 'nav_menu_description' ) as $filter ) {
