📄 functions-formatting.php
字号:
<?phpadd_action('sanitize_title', 'sanitize_title_with_dashes');function wptexturize($text) { $output = ""; // Capture tags and everything inside them $textarr = preg_split("/(<.*>)/Us", $text, -1, PREG_SPLIT_DELIM_CAPTURE); // capture the tags as well as in between $stop = count($textarr); $next = true; // loop stuff for ($i = 0; $i < $stop; $i++) { $curl = $textarr[$i]; //echo '<br />curl:'.$curl; if(empty($curl)) { $next = true; }elseif (isset($curl{0}) && '<' != $curl{0} && $next) { // If it's not a tag $curl = str_replace('---', '—', $curl); $curl = str_replace('--', '–', $curl); $curl = str_replace("...", '…', $curl); $curl = str_replace('``', '“', $curl); // This is a hack, look at this more later. It works pretty well though. $cockney = array("'tain't","'twere","'twas","'tis","'twill","'til","'bout","'nuff","'round"); $cockneyreplace = array("’tain’t","’twere","’twas","’tis","’twill","’til","’bout","’nuff","’round"); $curl = str_replace($cockney, $cockneyreplace, $curl); $curl = preg_replace("/'s/", "’s", $curl); $curl = preg_replace("/'(\d\d(?:’|')?s)/", "’$1", $curl); $curl = preg_replace('/(\s|\A|")\'/', '$1‘', $curl); $curl = preg_replace("/(\d+)\"/", "$1″", $curl); $curl = preg_replace("/(\d+)'/", "$1′", $curl); $curl = preg_replace("/(\S)'([^'\s])/", "$1’$2", $curl); $curl = preg_replace('/"([\s.,!?;:&\']|\Z)/', '”$1', $curl); $curl = preg_replace('/(\s|\A)"/', '$1“', $curl); $curl = preg_replace("/'([\s.]|\Z)/", '’$1', $curl); $curl = preg_replace("/\(tm\)/i", '™', $curl); $curl = preg_replace("/\(c\)/i", '©', $curl); $curl = preg_replace("/\(r\)/i", '®', $curl); $curl = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $curl); $curl = str_replace("''", '”', $curl); $curl = preg_replace('/(d+)x(\d+)/', "$1×$2", $curl); } elseif (strstr($curl, '<code') || strstr($curl, '<pre') || strstr($curl, '<kbd' || strstr($curl, '<style') || strstr($curl, '<script'))) { // strstr is fast $next = false; } else { $next = true; } $output .= $curl; } return $output;}function clean_pre($text) { $text = stripslashes($text); $text = str_replace('<br />', '', $text); return $text;}function wpautop($pee, $br = 1) { $pee = $pee . "\n"; // just to make things a little easier, pad the end $pee = preg_replace('|<br />\s*<br />|', "\n\n", $pee); // Space things out a little $pee = preg_replace('!(<(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)!', "\n$1", $pee); $pee = preg_replace('!(</(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])>)!', "$1\n", $pee); $pee = preg_replace("/(\r\n|\r)/", "\n", $pee); // cross-platform newlines $pee = preg_replace("/\n\n+/", "\n\n", $pee); // take care of duplicates $pee = preg_replace('/\n?(.+?)(?:\n\s*\n|\z)/s', "\t<p>$1</p>\n", $pee); // make paragraphs, including one at the end $pee = preg_replace('|<p>\s*?</p>|', '', $pee); // under certain strange conditions it could create a P of entirely whitespace $pee = preg_replace('!<p>\s*(</?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\s*</p>!', "$1", $pee); // don't pee all over a tag $pee = preg_replace("|<p>(<li.+?)</p>|", "$1", $pee); // problem with nested lists $pee = preg_replace('|<p><blockquote([^>]*)>|i', "<blockquote$1><p>", $pee); $pee = str_replace('</blockquote></p>', '</p></blockquote>', $pee); $pee = preg_replace('!<p>\s*(</?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)!', "$1", $pee); $pee = preg_replace('!(</?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\s*</p>!', "$1", $pee); if ($br) $pee = preg_replace('|(?<!<br />)\s*\n|', "<br />\n", $pee); // optionally make line breaks $pee = preg_replace('!(</?(?:table|thead|tbody|tr|td|th|div|dl|dd|dt|ul|ol|li|pre|select|form|blockquote|p|h[1-6])[^>]*>)\s*<br />!', "$1", $pee); $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)>)!', '$1', $pee); $pee = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&$1', $pee); $pee = preg_replace('!(<pre.*?>)(.*?)</pre>!ise', " stripslashes('$1') . clean_pre('$2') . '</pre>' ", $pee); return $pee;}function sanitize_title($title) { $title = do_action('sanitize_title', $title); return $title;}function sanitize_title_with_dashes($title) { $title = strtolower($title); $title = preg_replace('/&.+?;/', '', $title); // kill entities $title = preg_replace('/[^a-z0-9 _-]/', '', $title); $title = preg_replace('/\s+/', ' ', $title); $title = str_replace(' ', '-', $title); $title = preg_replace('|-+|', '-', $title); $title = trim($title, '-'); return $title;}function sanitize_text($str, $isArea=false, $isURL=false) { if (get_magic_quotes_gpc()) { $str = stripslashes($str); } $patterns = array(); $replacements = array(); $patterns[] = "/&/i"; $replacements[] = '&'; $patterns[] = "/ /"; $replacements[] = '&nbsp;'; if ($isArea) { $patterns[] = "/<(\/)?\s*script.*?>/si"; $replacements[] = "[$1script]"; $patterns[] = "/<(\/)?\s*style.*?>/si"; $replacements[] = "[$style]"; $patterns[] = "/<(\/)?\s*body.*?>/si"; $replacements[] = "[$body]"; $patterns[] = "/<(\/)?\s*link.*?>/si"; $replacements[] = "[$link]"; $patterns[] = "/(<.*)(?:onError|onUnload|onBlur|onFocus|onClick|onMouseOver|onSubmit|onReset|onChange|onSelect|onAbort)\s*=\s*("|').*\\2(.*?>)/si"; $replacements[] = "$1$3"; if ($isURL) { $patterns[] = "/("|').*/"; $replacements[] = ""; $patterns[] = "/(?:onError|onUnload|onBlur|onFocus|onClick|onMouseOver|onSubmit|onReset|onChange|onSelect|onAbort)\s*=\s*('|\"|"|').*(\\1)?/si"; $replacements[] = ""; } } else { $patterns[] = "/(
|
).*/"; $replacements = ""; } if ($isURL) { $patterns[] = "/javascript:/si"; $replacements[] = "javascript|"; $patterns[] = "/vbscript:/si"; $replacements[] = "vbscript|"; $patterns[] = "/about:/si"; $replacements[] = "about|"; } $str = htmlspecialchars($str, ENT_QUOTES); $str = preg_replace($patterns,$replacements, $str); return $str;}function convert_chars($content,$flag='obsolete attribute left there for backwards compatibility') { // html/unicode entities output global $wp_htmltrans, $wp_htmltranswinuni; // removes metadata tags $content = preg_replace('/<title>(.+?)<\/title>/','',$content); $content = preg_replace('/<category>(.+?)<\/category>/','',$content); if (get_settings('use_htmltrans')) { // converts lone & characters into & (a.k.a. &) $content = preg_replace('/&[^#](?![a-z]*;)/ie', '"&".substr("\0",1)', $content); // converts HTML-entities to their display values in order to convert them again later $content = preg_replace('/['.chr(127).'-'.chr(255).']/e', '"&#".ord(\'\0\').";"', $content ); $content = strtr($content, $wp_htmltrans); // now converting: Windows CP1252 => Unicode (valid HTML) // (if you've ever pasted text from MSWord, you'll understand) $content = strtr($content, $wp_htmltranswinuni); } // you can delete these 2 lines if you don't like <br /> and <hr /> $content = str_replace("<br>","<br />",$content); $content = str_replace("<hr>","<hr />",$content); return $content;}/* balanceTags Balances Tags of string using a modified stack. @param text Text to be balanced @return Returns balanced text @author Leonard Lin (leonard@acm.org) @version v1.1 @date November 4, 2001 @license GPL v2.0 @notes @changelog 1.2 ***TODO*** Make better - change loop condition to $text 1.1 Fixed handling of append/stack pop order of end text Added Cleaning Hooks 1.0 First Version*/function balanceTags($text, $is_comment = 0) { if (get_settings('use_balanceTags') == 0) { return $text; } $tagstack = array(); $stacksize = 0; $tagqueue = ''; $newtext = ''; # b2 bug fix for comments - in case you REALLY meant to type '< !--' $text = str_replace('< !--', '< !--', $text); # b2 bug fix for LOVE <3 (and other situations with '<' before a number) $text = preg_replace('#<([0-9]{1})#', '<$1', $text); while (preg_match("/<(\/?\w*)\s*([^>]*)>/",$text,$regex)) { $newtext = $newtext . $tagqueue; $i = strpos($text,$regex[0]); $l = strlen($tagqueue) + strlen($regex[0]); // clear the shifter $tagqueue = ''; // Pop or Push if ($regex[1][0] == "/") { // End Tag $tag = strtolower(substr($regex[1],1)); // if too many closing tags if($stacksize <= 0) { $tag = ''; //or close to be safe $tag = '/' . $tag; } // if stacktop value = tag close value then pop else if ($tagstack[$stacksize - 1] == $tag) { // found closing tag $tag = '</' . $tag . '>'; // Close Tag // Pop array_pop ($tagstack); $stacksize--; } else { // closing tag not at top, search for it for ($j=$stacksize-1;$j>=0;$j--) { if ($tagstack[$j] == $tag) { // add tag to tagqueue for ($k=$stacksize-1;$k>=$j;$k--){ $tagqueue .= '</' . array_pop ($tagstack) . '>'; $stacksize--; } break; } } $tag = ''; } } else { // Begin Tag $tag = strtolower($regex[1]); // Tag Cleaning // Push if not img or br or hr if($tag != 'br' && $tag != 'img' && $tag != 'hr') { $stacksize = array_push ($tagstack, $tag); } // Attributes // $attributes = $regex[2]; $attributes = $regex[2]; if($attributes) { $attributes = ' '.$attributes; } $tag = '<'.$tag.$attributes.'>'; } $newtext .= substr($text,0,$i) . $tag; $text = substr($text,$i+$l); } // Clear Tag Queue $newtext = $newtext . $tagqueue;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -