// With no space after the ?. //NB //NB // // // Default regex match string within [space]string[space], but WON'T match within >tags< //$regex = "(?!<.*?)([\s\'\"\.\x98\x99\x9c\x9d\xCB\x9C\xE2\x84\xA2\xC5\x93\xEF\xBF\xBD\(\[\{])($old_text)([\s\'\"\x98\x99\x9c\x9d\xCB\x9C\xE2\x84\xA2\xC5\x93\xEF\xBF\xBD\?\!\.\,\-\+\]\)\}])(?![^<>]*? >)"; // // // edited original to be more lenient. Matches >ACR< and ACR. instead of just [space]ACR[space]. $regex = "([\\s\\>\\'\"\\.����˜™œ�\\(\\[\\{])({$old_text})([\\s\\<\\'\"����˜™œ�\\?\\!\\.\\,\\-\\+\\]\\)\\}])"; // If the text to be replaced has multibyte character(s), use // mb_ereg_replace() if possible. if ($can_do_mb && strlen($old_text) != mb_strlen($old_text)) { // NOTE: mb_ereg_replace() does not support limiting the number of replacements. $text = mb_ereg_replace($regex, $new_text, $text, $preg_flags); } else { $text = preg_replace("~{$regex}~{$preg_flags}", $new_text, $text, $limit); } } // Restore original mb_regexp_encoding, if changed. if ($mb_regex_encoding) { mb_regex_encoding($mb_regex_encoding); } return trim($text); } } // end c2c_TextHover c2c_TextHover::get_instance(); } // end if !class_exists()
function test_hover_applies_to_custom_filter_via_filter() { $this->assertEquals('coffee2code', apply_filters('custom_filter', 'coffee2code')); add_filter('c2c_text_hover_filters', array($this, 'add_custom_filter')); c2c_TextHover::get_instance()->register_filters(); // Plugins would typically register their filter before this originally fires $this->assertEquals($this->expected_text('coffee2code'), apply_filters('custom_filter', 'coffee2code')); }