html - 尝试将 HTML 转换为 Ajax 的问题
问题描述
我在用于我的网站的视频脚本(视频页面布局)中得到了这个:
<div class="video-views pull-left">
{$videos[i].viewnumber|kilo} {if $videos[i].viewnumber == '1'}{t c='global.view'}{else}{t c='global.views'}{/if}
</div>
相关视频部分使用 Ajax 进行通过“显示更多”按钮生成的视频页面布局。
我的问题是:我不知道如何在 Ajax {$videos[i].viewnumber|kilo} 中转换“kilo”函数。我尝试了几件事,但没有结果。
$code[] = '<div class="video-views pull-left">';
$views = ($video['viewnumber'] == '1') ? $lang['global.view'] : $lang['global.views'];
$code[] = $video['viewnumber']. ' '.$views;
$code[] = '</div>';
解决方案
Kilo 不是 Smarty 发行版中包含的修饰符,但如果您可以访问您网站上的代码,您可以从插件文件中提取代码,它很可能是smarty/libs/plugins/modifier.kilo.php
.
看起来您正在使用 PHP 来构建对 AJAX 请求的响应,因此您可以将该代码拉出并重新使用它。
如果您无权访问修改器文件,则可以自己重新创建格式。从上下文来看,这很简单,例如:
<?php
/**
* Format integers into human readable strings indicating number of thousands
* Example: 1200 -> 1.2K
* @param int $value
* @return string
*/
function kilo(int $value): string
{
// If the value is less than 1000, just return it
if($value < 1000)
{
return $value;
}
/*
* If the value is evenly divisible by 1000, we want to show a whole number,
* otherwise format it as a single precision float. Add "K" string literal
* to indicate thousands
*/
$formatString = ($value % 1000) ? '%.1fK':'%dK';
// Divide value by 1000
$value /= 1000;
// Return the formatted string
return sprintf($formatString, $value);
}
// Define some test data and echo the formatted values
$testViewCounts = [1, 123, 1230, 12300, 123000];
foreach($testViewCounts as $views)
{
// If only one view, do not pluralize
$label = ($views == 1) ? 'view':'views';
echo kilo($views).' '.$label.PHP_EOL;
}
推荐阅读
- php - PHP psr-0 命名空间找不到类
- c# - 如何在 C# 中启动一个与非异步函数异步的函数?
- machine-learning - 如何适应神经网络权重的随机性?
- vb.net - DataGridView - ComboBoxColumn 不工作
- java - 在 getclass() 方法之后转换一个对象
- laravel - 我正在寻找任何使用 laravel 的入门套件或样板
- c - 了解 xdg-open 的可用性
- python-3.x - Mysql.connector Python,已使用连接时无结果
- regex - 我怎么能正则表达式呢?
- angular - 将 CKEditor 作为内联编辑器与 Angular 4 集成