⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 functions-formatting.php

📁 在综合英文版XOOPS 2.09, 2.091, 2.092 的基础上正式发布XOOPS 2.09中文版 XOOPS 2.09x 版主要是PHP5升级、bug修正和安全补正: 1 全面兼容PHP 5.
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?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('---', '&#8212;', $curl);			$curl = str_replace('--', '&#8211;', $curl);			$curl = str_replace("...", '&#8230;', $curl);			$curl = str_replace('``', '&#8220;', $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("&#8217;tain&#8217;t","&#8217;twere","&#8217;twas","&#8217;tis","&#8217;twill","&#8217;til","&#8217;bout","&#8217;nuff","&#8217;round");			$curl = str_replace($cockney, $cockneyreplace, $curl);			$curl = preg_replace("/'s/", "&#8217;s", $curl);			$curl = preg_replace("/'(\d\d(?:&#8217;|')?s)/", "&#8217;$1", $curl);			$curl = preg_replace('/(\s|\A|")\'/', '$1&#8216;', $curl);			$curl = preg_replace("/(\d+)\"/", "$1&Prime;", $curl);			$curl = preg_replace("/(\d+)'/", "$1&prime;", $curl);			$curl = preg_replace("/(\S)'([^'\s])/", "$1&#8217;$2", $curl);			$curl = preg_replace('/"([\s.,!?;:&\']|\Z)/', '&#8221;$1', $curl);            $curl = preg_replace('/(\s|\A)"/', '$1&#8220;', $curl);			$curl = preg_replace("/'([\s.]|\Z)/", '&#8217;$1', $curl);			$curl = preg_replace("/\(tm\)/i", '&#8482;', $curl);			$curl = preg_replace("/\(c\)/i", '&#169;', $curl);			$curl = preg_replace("/\(r\)/i", '&#174;', $curl);			$curl = preg_replace('/&([^#])(?![a-z]{1,8};)/', '&#038;$1', $curl);			$curl = str_replace("''", '&#8221;', $curl);			$curl = preg_replace('/(d+)x(\d+)/', "$1&#215;$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};)/', '&#038;$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[] = "/&amp;/i";	$replacements[] = '&';	$patterns[] = "/&nbsp;/";	$replacements[] = '&amp;nbsp;';	if ($isArea) {		$patterns[] = "/&lt;(\/)?\s*script.*?&gt;/si";		$replacements[] = "[$1script]";		$patterns[] = "/&lt;(\/)?\s*style.*?&gt;/si";		$replacements[] = "[$style]";		$patterns[] = "/&lt;(\/)?\s*body.*?&gt;/si";		$replacements[] = "[$body]";		$patterns[] = "/&lt;(\/)?\s*link.*?&gt;/si";		$replacements[] = "[$link]";		$patterns[] = "/(&lt;.*)(?:onError|onUnload|onBlur|onFocus|onClick|onMouseOver|onSubmit|onReset|onChange|onSelect|onAbort)\s*=\s*(&quot;|&#039;).*\\2(.*?&gt;)/si";		$replacements[] = "$1$3";		if ($isURL) {			$patterns[] = "/(&quot;|&#039;).*/";			$replacements[] = "";			$patterns[] = "/(?:onError|onUnload|onBlur|onFocus|onClick|onMouseOver|onSubmit|onReset|onChange|onSelect|onAbort)\s*=\s*('|\"|&quot;|&#039;).*(\\1)?/si";			$replacements[] = "";		}	} else {		$patterns[] = "/(&#13|&#10).*/";		$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 &#38; (a.k.a. &amp;)		$content = preg_replace('/&[^#](?![a-z]*;)/ie', '"&#38;".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})#', '&lt;$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 + -