【问题标题】:Put a lang function inside of a php string在 php 字符串中放置一个 lang 函数
【发布时间】:2015-07-08 23:42:55
【问题描述】:

尝试将我的 MySQL 数据库转换为 PHP。

代码如下:

$sql = "SELECT Name, Price FROM utf WHERE Name LIKE 'K%'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    echo "<div class=\"CSSTableGenerator style=\"width:600px;height:150px;\"><table><tr><th>Name</th><th>Price</th></tr></div>";
    // output data of each row
   while($row = $result->fetch_assoc()) {
    $name = str_replace('K', 'Karambit', $row['Name']);
    echo "<tr><td>".$name."</td><td>".$row["Price"]." ".$row["Trend"]."</td></tr>";
}
   echo "</table>";

所以选择,按签名字符过滤,然后翻译。

现在,我有一个包含翻译的 lang.php 文件。

这里是:

<?php
function lang($phrase){
    static $lang = array(
        'ba' => 'Bayonet',
        'ka' => 'Karambit'
    );
    return $lang[$phrase];
}
?>

我怎么把它放在这一行:

$name = str_replace('K', 'Karambit', $row['Name']);

并将'ka' =&gt; 'Karambit' 替换为'Karambit'

这些都不起作用:

//attempt 1
$name = str_replace('K', 'lang('ka');', $row['Name']);
//attempt 2
$name = str_replace('K', '$lang('ka');', $row['Name']);
//attempt 3
$word = echo lang('ka');
$name = str_replace('K', '$word', $row['Name']);

【问题讨论】:

    标签: php mysql string function str-replace


    【解决方案1】:

    不要将function 调用放在引号中,只需使用:

    $name = str_replace('K', lang('ka'), $row['Name']);
                           //^^^^^^^^^^ See here
    

    也给你另一种选择:

    您可以将 search =&gt; replace 值存储到这样的数组中:

    $searchReplace = [
        "ba" => "Bayonet",
        "ka" => "Karambit",
    ];
    

    然后您可以简单地使用strtr() 替换它,例如

    $name = strtr($row['Name'], $searchReplace);
    

    【讨论】:

    • @ParsaPierre 不客气。 (我还添加了另一种选择,这可能会简化您的代码)
    猜你喜欢
    • 2023-03-16
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多