PHP表格从数据库取价并设置英镑货币格式的技术求助
解决PHP中MySQL商品价格格式化为英镑符号的问题
嘿,我来帮你搞定这个价格格式化的问题!先看看你当前代码里的小错误,再给你几个实用的解决方案:
首先修正代码里的语法错误
你输出价格的那一行有引号和分号的使用错误,导致代码无法正常运行:
<td>" '$'.number_format(floatval($row["ProductPrice"]));."</td>
这里的字符串拼接逻辑不对,应该用.来连接字符串,而且分号不该插在中间。
方案1:直接拼接英镑符号(最简单直接)
如果只是需要给价格加上£前缀,不需要复杂的货币格式化规则,直接拼接即可,这种方式不需要依赖系统locale,兼容性最好:
修正后的完整代码片段:
include 'db_connection.php'; $conn = OpenCon(); echo "Connected Successfully"; $sql = "SELECT * FROM Product, Manufacturer Where Product_ID = Manufacturer_ID"; $result = $conn->query($sql); if ($result->num_rows > 0){ echo "<table> <tr> <th>Product ID</th> <th>Name</th> <th>Product Description</th> <th>Price</th> <th>Image</th> <th>Manufacturer Name</th> </tr>"; while($row = $result->fetch_assoc()){ // 直接拼接£符号,同时修正字符串拼接语法 $formattedPrice = '£' . number_format(floatval($row["ProductPrice"])); echo "<tr> <td>".$row["Product_ID"]."</td> <td>".$row["Name"]."</td> <td>".$row["Product_Description"]."</td> <td>".$formattedPrice."</td> <td><img src='images/".$row['ProductImage']."'></td> <td>".$row["ManufacturerName"]."</td> </tr>"; } echo "</table>"; } else { echo "0 results"; } $conn->close();
方案2:使用NumberFormatter(推荐,支持标准货币格式化)
如果需要更规范的货币格式(比如处理小数位、千分位等),推荐使用PHP的Intl扩展中的NumberFormatter,它支持多语言和标准货币规则,而且是PHP新版本推荐的方式(替代已弃用的money_format):
首先确保你的PHP开启了Intl扩展(在php.ini里启用extension=intl),然后修改价格格式化部分:
// 在循环内添加 $price = floatval($row["ProductPrice"]); // 创建英镑格式的NumberFormatter实例 $formatter = new NumberFormatter('en_GB', NumberFormatter::CURRENCY); // 格式化价格为英镑格式,比如£500.00(如果有小数的话) $formattedPrice = $formatter->formatCurrency($price, 'GBP');
把这个替换到方案1中的$formattedPrice赋值部分即可,这种方式会自动按照英国的货币规则处理格式,比如小数位数、分隔符等。
为什么之前的setlocale没生效?
之前你尝试用setlocale(LC_MONETARY, 'en_US'),但一是你设置的是美国区域,对应美元,二是money_format函数(如果用的话)依赖系统安装对应的locale包,很多服务器默认可能没有安装en_GB的locale,所以容易出问题。而直接拼接或者用Intl扩展的方式更可靠。
内容的提问来源于stack exchange,提问作者Lagartist
相关产品推荐
相关产品推荐

