wptexturize()
wptexturize( string $text, bool $reset = false ) 用格式化的实…
wptexturize( string $text, bool $reset = false )
用格式化的实体替换普通的纯文本字符。
Replaces common plain text characters with formatted entities.
目录锚点:#说明#参数#源码
说明(Description)
Description返回给定文本,并将引号转换为智能引号、撇号、破折号、省略号、商标符号和乘法符号。举个例子,因为今天的努力值得明天的“假期”。。。变成:’因为今天的努力使它值得明天的“假日”…某些HTML块中的代码被跳过。不要在“init”操作钩子之前使用此函数;一切都将中断。
参数(Parameters)
参数 | 类型 | 说明 |
---|---|---|
$text | (string) | 要格式化的文本。 |
$reset | (bool) | 对于单元测试,设置为true。转换后的图案将重置。 |
源码(Source)
/** * 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="" &&="">
更新版本 | 源码位置 | 使用 | 被使用 |
---|---|---|---|
0.71 | wp-includes/formatting.php | 8 | 5 |
类别:WordPress 函数手册、
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!