PO::unpoify()

最后更新于:2021-11-25 21:28:38

PO::unpoify( string$string)

Gives back the original string from a PO-formatted string

参数

$string

(string) (Required) PO-formatted string

响应

(string) enascaped string

源文件

文件: gc-includes/pomo/po.php

		public static function unpoify( $string ) {
			$escapes               = array(
				't'  => "t",
				'n'  => "n",
				'r'  => "r",
				'\' => '\',
			);
			$lines                 = array_map( 'trim', explode( "n", $string ) );
			$lines                 = array_map( array( 'PO', 'trim_quotes' ), $lines );
			$unpoified             = '';
			$previous_is_backslash = false;
			foreach ( $lines as $line ) {
				preg_match_all( '/./u', $line, $chars );
				$chars = $chars[0];
				foreach ( $chars as $char ) {
					if ( ! $previous_is_backslash ) {
						if ( '\' === $char ) {
							$previous_is_backslash = true;
						} else {
							$unpoified .= $char;
						}
					} else {
						$previous_is_backslash = false;
						$unpoified            .= isset( $escapes[ $char ] ) ? $escapes[ $char ] : $char;
					}
				}
			}

			// Standardise the line endings on imported content, technically PO files shouldn't contain r.
			$unpoified = str_replace( array( "rn", "r" ), "n", $unpoified );

			return $unpoified;
		}