wptexturize()将纯文本字符转换成格式化的HTML实体

目录

描述

将纯文本字符转换成格式化的 HTML 实体。<pre><code><kbd><style><script><tt>中的文本被忽略。

wptexturize() 描述

用法

 <?php wptexturize$text ); ?> 

wptexturize() 用法

参数

$text

(string) (必填) 将被格式化的文本

默认值: None

wptexturize() 参数

返回值

(string) 

被替换成HTML数字实体字符的文 

wptexturize() 返回值

注意

 启和关闭 号将  WordPress 翻译文   义,下面是 wptexturize 做的转 

原始文本 转换之后的文本 符号名称
"---" "—" em-dash | 破折号
" -- " "—" em-dash | 破折号
"--" "–" en-dash | 破折号
" - " "–" en-dash | 破折号
"..." "…" ellipsis | 省略号
`` opening quote | 开启引号
"hello “hello opening quote | 开启引号
'hello ‘hello opening quote | 开启引号
'' closing quote | 关闭引号
world." world.” closing quote | 关闭引号
world.' world.’ closing quote | 关闭引号
" (tm)" " ™" trademark symbol | 注册商标符号
1234" 1234″ double prime symbol | 双撇号
1234' 1234′ prime symbol | 撇号
'99 ’99 apostrophe before abbreviated year | 年号之前的撇号
Webster's Webster’s apostrophe in a word | 单词撇号
1234x1234 1234×1234 multiplication symbol | 乘法符号

There is a small "cockney" list of transformations, as well. They can be replaced if the variable $wp_cockneyreplace is defined and contains an associative array with the keys containing the source strings and the values containing the transformed strings. By default the following strings will be transformed:

  • 'tain't
  • 'twere
  • 'twas
  • 'tis
  • 'twill
  • 'til
  • 'bout
  • 'nuff
  • 'round
  • 'cause
  • wptexturize() 注意

    历史

    添加于 版本: 0.71

    In 4.0: wptexturize() and _wptexturize_pushpop_element() were significantly revised to improve performance and to resolve many bugs. This version also added the run_wptexturize filter to allow a theme or plugin to permanently disable this feature.

    wptexturize() 历史

    源文件

    wptexturize() 函数的代码位于 wp-includes/formatting.php.

    /* ----------------------------------
     * wordpress之魂 © http://wphun.com
     * ---------------------------------- */
    /**
     * Replaces common plain text characters into formatted entities
     *
     * As an example,
     *
     *     'cause today's effort makes it worth tomorrow's "holiday" ...
     *
     * Becomes:
     *
     *     ’cause today’s effort makes it worth tomorrow’s “holiday” …
     *
     * Code within certain html blocks are skipped.
     *
     * Do not use this function before the 'init' action hook; everything will break.
     *
     * @since 0.71
     *
     * @global array $wp_cockneyreplace Array of formatted entities for certain common phrases
     * @global array $shortcode_tags
     * @staticvar array $static_characters
     * @staticvar array $static_replacements
     * @staticvar array $dynamic_characters
     * @staticvar array $dynamic_replacements
     * @staticvar array $default_no_texturize_tags
     * @staticvar array $default_no_texturize_shortcodes
     * @staticvar bool  $run_texturize
     *
     * @param string $text The text to be formatted
     * @param bool   $reset Set to true for unit testing. Translated patterns will reset.
     * @return string The string replaced with html entities
     */
    function wptexturize( $text, $reset = false ) {
    	global $wp_cockneyreplace, $shortcode_tags;
    	static $static_characters = null,
    		$static_replacements = null,
    		$dynamic_characters = null,
    		$dynamic_replacements = null,
    		$default_no_texturize_tags = null,
    		$default_no_texturize_shortcodes = null,
    		$run_texturize = true,
    		$apos = null,
    		$prime = null,
    		$double_prime = null,
    		$opening_quote = null,
    		$closing_quote = null,
    		$opening_single_quote = null,
    		$closing_single_quote = null,
    		$open_q_flag = '',
    		$open_sq_flag = '',
    		$apos_flag = '';
    
    	// If there's nothing to do, just stop.
    	if ( empty( $text ) || false === $run_texturize ) {
    		return $text;
    	}
    
    	// Set up static variables. Run once only.
    	if ( $reset || ! isset( $static_characters ) ) {
    		/**
    		 * Filter whether to skip running wptexturize().
    		 *
    		 * Passing false to the filter will effectively short-circuit wptexturize().
    		 * returning the original text passed to the function instead.
    		 *
    		 * The filter runs only once, the first time wptexturize() is called.
    		 *
    		 * @since 4.0.0
    		 *
    		 * @see wptexturize()
    		 *
    		 * @param bool $run_texturize Whether to short-circuit wptexturize().
    		 */
    		$run_texturize = apply_filters( 'run_wptexturize', $run_texturize );
    		if ( false === $run_texturize ) {
    			return $text;
    		}
    
    		/* translators: opening curly double quote */
    		$opening_quote = _x( '“', 'opening curly double quote' );
    		/* translators: closing curly double quote */
    		$closing_quote = _x( '”', 'closing curly double quote' );
    
    		/* translators: apostrophe, for example in 'cause or can't */
    		$apos = _x( '’', 'apostrophe' );
    
    		/* translators: prime, for example in 9' (nine feet) */
    		$prime = _x( '′', 'prime' );
    		/* translators: double prime, for example in 9" (nine inches) */
    		$double_prime = _x( '″', 'double prime' );
    
    		/* translators: opening curly single quote */
    		$opening_single_quote = _x( '‘', 'opening curly single quote' );
    		/* translators: closing curly single quote */
    		$closing_single_quote = _x( '’', 'closing curly single quote' );
    
    		/* translators: en dash */
    		$en_dash = _x( '–', 'en dash' );
    		/* translators: em dash */
    		$em_dash = _x( '—', 'em dash' );
    
    		$default_no_texturize_tags = array('pre', 'code', 'kbd', 'style', 'script', 'tt');
    		$default_no_texturize_shortcodes = array('code');
    
    		// if a plugin has provided an autocorrect array, use it
    		if ( isset($wp_cockneyreplace) ) {
    			$cockney = array_keys( $wp_cockneyreplace );
    			$cockneyreplace = array_values( $wp_cockneyreplace );
    		} else {
    			/* translators: This is a comma-separated list of words that defy the syntax of quotations in normal use,
    			 * for example...  'We do not have enough words yet' ... is a typical quoted phrase.  But when we write
    			 * lines of code 'til we have enough of 'em, then we need to insert apostrophes instead of quotes.
    			 */
    			$cockney = explode( ',', _x( "'tain't,'twere,'twas,'tis,'twill,'til,'bout,'nuff,'round,'cause,'em",
    				'Comma-separated list of words to texturize in your language' ) );
    
    			$cockneyreplace = explode( ',', _x( '’tain’t,’twere,’twas,’tis,’twill,’til,’bout,’nuff,’round,’cause,’em',
    				'Comma-separated list of replacement words in your language' ) );
    		}
    
    		$static_characters = array_merge( array( '...', '``', '''', ' (tm)' ), $cockney );
    		$static_replacements = array_merge( array( '…', $opening_quote, $closing_quote, ' ™' ), $cockneyreplace );
    
    
    		// Pattern-based replacements of characters.
    		// Sort the remaining patterns into several arrays for performance tuning.
    		$dynamic_characters = array( 'apos' => array(), 'quote' => array(), 'dash' => array() );
    		$dynamic_replacements = array( 'apos' => array(), 'quote' => array(), 'dash' => array() );
    		$dynamic = array();
    		$spaces = wp_spaces_regexp();
    
    		// '99' and '99" are ambiguous among other patterns; assume it's an abbreviated year at the end of a quotation.
    		if ( "'" !== $apos || "'" !== $closing_single_quote ) {
    			$dynamic[ '/'(dd)'(?=|[.,:;!?)}-]]|>|' . $spaces . ')/' ] = $apos_flag . '$1' . $closing_single_quote;
    		}
    		if ( "'" !== $apos || '"' !== $closing_quote ) {
    			$dynamic[ '/'(dd)"(?=|[.,:;!?)}-]]|>|' . $spaces . ')/' ] = $apos_flag . '$1' . $closing_quote;
    		}
    
    		// '99 '99s '99's (apostrophe)  But never '9 or '99% or '999 or '99.0.
    		if ( "'" !== $apos ) {
    			$dynamic[ '/'(?=dd(?:|(?![%d]|[.,]d)))/' ] = $apos_flag;
    		}
    
    		// Quoted Numbers like '0.42'
    		if ( "'" !== $opening_single_quote && "'" !== $closing_single_quote ) {
    			$dynamic[ '/(?<=a|' .="" $spaces="" .="" ')'(d[.,d]*)'/'="" ]="$open_sq_flag" .="" '$1'="" .="" $closing_single_quote;="" }="" single="" quote="" at="" start,="" or="" preceded="" by="" (,="" {,=""><, [,="" ",="" -,="" or="" spaces.="" if="" (="" "'"="" !="=" $opening_single_quote="" )="" {="" $dynamic[=""><=a|[([{"-]|<|' .="" $spaces="" .="" ')'/'="" ]="$open_sq_flag;" }="" apostrophe="" in="" a="" word.="" no="" spaces,="" double="" apostrophes,="" or="" other="" punctuation.="" if="" (="" "'"="" !="=" $apos="" )="" {="" $dynamic[=""> is found.
    		.     '-(?!->)' // Dash not followed by end of comment.
    		.     '[^-]*+' // Consume non-dashes.
    		. ')*+'         // Loop possessively.
    		. '(?:-->)?';   // End of comment. If not found, match all input.
    
    	$shortcode_regex =
    		  '['              // Find start of shortcode.
    		. '[\/[]?'         // Shortcodes may begin with [/ or [[
    		. $tagregexp        // Only match registered shortcodes, because performance.
    		. '(?:'
    		.     '[^[]<>]+'  // Shortcodes do not contain other shortcodes. Quantifier critical.
    		. '|'
    		.     '<[^[]>]*>' // HTML elements permitted. Prevents matching ] before >.
    		. ')*+'             // Possessive critical.
    		. ']'              // Find end of shortcode.
    		. ']?';            // Shortcodes may end with ]]
    
    	$regex =
    		  '/('                   // Capture the entire match.
    		.     '<' find="" start="" of="" element.="" .="" '(?(?="!--)'" is="" this="" a="" comment?="" .="" $comment_regex="" find="" end="" of="" comment.="" .="" '|'="" .="" '[^="">]*>'       // Find end of element.
    		.     ')'
    		. '|'
    		.     $shortcode_regex   // Find shortcodes.
    		. ')/s';
    
    	$textarr = preg_split( $regex, $text, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY );
    
    	foreach ( $textarr as &$curl ) {
    		// Only call _wptexturize_pushpop_element if $curl is a delimiter.
    		$first = $curl[0];
    		if ( '<' =="=" $first="" &&="">