当前位置: 首页>>代码示例>>PHP>>正文


PHP PO::read_line方法代码示例

本文整理汇总了PHP中PO::read_line方法的典型用法代码示例。如果您正苦于以下问题:PHP PO::read_line方法的具体用法?PHP PO::read_line怎么用?PHP PO::read_line使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PO的用法示例。


在下文中一共展示了PO::read_line方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: read_entry

 function read_entry($f, $lineno = 0)
 {
     $entry = new Translation_Entry();
     // where were we in the last step
     // can be: comment, msgctxt, msgid, msgid_plural, msgstr, msgstr_plural
     $context = '';
     $msgstr_index = 0;
     $is_final = create_function('$context', 'return $context == "msgstr" || $context == "msgstr_plural";');
     while (true) {
         $lineno++;
         $line = PO::read_line($f);
         if (!$line) {
             if (feof($f)) {
                 if ($is_final($context)) {
                     break;
                 } elseif (!$context) {
                     // we haven't read a line and eof came
                     return null;
                 } else {
                     return false;
                 }
             } else {
                 return false;
             }
         }
         if ($line == "\n") {
             continue;
         }
         $line = trim($line);
         if (preg_match('/^#/', $line, $m)) {
             // the comment is the start of a new entry
             if ($is_final($context)) {
                 PO::read_line($f, 'put-back');
                 $lineno--;
                 break;
             }
             // comments have to be at the beginning
             if ($context && $context != 'comment') {
                 return false;
             }
             // add comment
             $this->add_comment_to_entry($entry, $line);
         } elseif (preg_match('/^msgctxt\\s+(".*")/', $line, $m)) {
             if ($is_final($context)) {
                 PO::read_line($f, 'put-back');
                 $lineno--;
                 break;
             }
             if ($context && $context != 'comment') {
                 return false;
             }
             $context = 'msgctxt';
             $entry->context .= PO::unpoify($m[1]);
         } elseif (preg_match('/^msgid\\s+(".*")/', $line, $m)) {
             if ($is_final($context)) {
                 PO::read_line($f, 'put-back');
                 $lineno--;
                 break;
             }
             if ($context && $context != 'msgctxt' && $context != 'comment') {
                 return false;
             }
             $context = 'msgid';
             $entry->singular .= PO::unpoify($m[1]);
         } elseif (preg_match('/^msgid_plural\\s+(".*")/', $line, $m)) {
             if ($context != 'msgid') {
                 return false;
             }
             $context = 'msgid_plural';
             $entry->is_plural = true;
             $entry->plural .= PO::unpoify($m[1]);
         } elseif (preg_match('/^msgstr\\s+(".*")/', $line, $m)) {
             if ($context != 'msgid') {
                 return false;
             }
             $context = 'msgstr';
             $entry->translations = array(PO::unpoify($m[1]));
         } elseif (preg_match('/^msgstr\\[(\\d+)\\]\\s+(".*")/', $line, $m)) {
             if ($context != 'msgid_plural' && $context != 'msgstr_plural') {
                 return false;
             }
             $context = 'msgstr_plural';
             $msgstr_index = $m[1];
             $entry->translations[$m[1]] = PO::unpoify($m[2]);
         } elseif (preg_match('/^".*"$/', $line)) {
             $unpoified = PO::unpoify($line);
             switch ($context) {
                 case 'msgid':
                     $entry->singular .= $unpoified;
                     break;
                 case 'msgctxt':
                     $entry->context .= $unpoified;
                     break;
                 case 'msgid_plural':
                     $entry->plural .= $unpoified;
                     break;
                 case 'msgstr':
                     $entry->translations[0] .= $unpoified;
                     break;
                 case 'msgstr_plural':
//.........这里部分代码省略.........
开发者ID:mostafiz93,项目名称:PrintfScanf,代码行数:101,代码来源:po.php

示例2: read_entry

	function read_entry($f, $lineno = 0) {
		$entry = new Translation_Entry();
						$context = '';
		$msgstr_index = 0;
		$is_final = create_function('$context', 'return $context == "msgstr" || $context == "msgstr_plural";');
		while (true) {
			$lineno++;
			$line = PO::read_line($f);
			if (!$line)  {
				if (feof($f)) {
					if ($is_final($context))
						break;
					elseif (!$context) 						return null;
					else
						return false;
				} else {
					return false;
				}
			}
			if ($line == "\n") continue;
			$line = trim($line);
			if (preg_match('/^#/', $line, $m)) {
								if ($is_final($context)) {
					PO::read_line($f, 'put-back');
					$lineno--;
					break;
				}
								if ($context && $context != 'comment') {
					return false;
				}
								$this->add_comment_to_entry($entry, $line);
			} elseif (preg_match('/^msgctxt\s+(".*")/', $line, $m)) {
				if ($is_final($context)) {
					PO::read_line($f, 'put-back');
					$lineno--;
					break;
				}
				if ($context && $context != 'comment') {
					return false;
				}
				$context = 'msgctxt';
				$entry->context .= PO::unpoify($m[1]);
			} elseif (preg_match('/^msgid\s+(".*")/', $line, $m)) {
				if ($is_final($context)) {
					PO::read_line($f, 'put-back');
					$lineno--;
					break;
				}
				if ($context && $context != 'msgctxt' && $context != 'comment') {
					return false;
				}
				$context = 'msgid';
				$entry->singular .= PO::unpoify($m[1]);
			} elseif (preg_match('/^msgid_plural\s+(".*")/', $line, $m)) {
				if ($context != 'msgid') {
					return false;
				}
				$context = 'msgid_plural';
				$entry->is_plural = true;
				$entry->plural .= PO::unpoify($m[1]);
			} elseif (preg_match('/^msgstr\s+(".*")/', $line, $m)) {
				if ($context != 'msgid') {
					return false;
				}
				$context = 'msgstr';
				$entry->translations = array(PO::unpoify($m[1]));
			} elseif (preg_match('/^msgstr\[(\d+)\]\s+(".*")/', $line, $m)) {
				if ($context != 'msgid_plural' && $context != 'msgstr_plural') {
					return false;
				}
				$context = 'msgstr_plural';
				$msgstr_index = $m[1];
				$entry->translations[$m[1]] = PO::unpoify($m[2]);
			} elseif (preg_match('/^".*"$/', $line)) {
				$unpoified = PO::unpoify($line);
				switch ($context) {
					case 'msgid':
						$entry->singular .= $unpoified; break;
					case 'msgctxt':
						$entry->context .= $unpoified; break;
					case 'msgid_plural':
						$entry->plural .= $unpoified; break;
					case 'msgstr':
						$entry->translations[0] .= $unpoified; break;
					case 'msgstr_plural':
						$entry->translations[$msgstr_index] .= $unpoified; break;
					default:
						return false;
				}
			} else {
				return false;
			}
		}
		if (array() == array_filter($entry->translations, create_function('$t', 'return $t || "0" === $t;'))) {
			$entry->translations = array();
		}
		return array('entry' => $entry, 'lineno' => $lineno);
	}
开发者ID:pf5512,项目名称:phpstudy,代码行数:98,代码来源:po.php


注:本文中的PO::read_line方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。