如何在php中更改字符串中的最后一个字符

如何在php中更改字符串中的最后一个字符,php,string,replace,Php,String,Replace,我的问题是如何在php中更改/替换字符串中的最后一个字符 我有三个姓: Nowak Kowalski Nowacki 现在我的代码为Kowalski和Nowacki工作。当我为姓科瓦尔斯基和诺瓦基改变性别时,这是可行的,但这也适用于诺瓦克。 我只想在字符串结束时更改最后一个字符 ski cki 在 当最后一个字符是另一个字符时,我不想更改/替换任何内容。 我的实际代码: <?php $string = 'Nowak'; $temp = rtrim($string, "ki ka");

我的问题是如何在php中更改/替换字符串中的最后一个字符 我有三个姓:

Nowak
Kowalski
Nowacki
现在我的代码为Kowalski和Nowacki工作。当我为姓科瓦尔斯基和诺瓦基改变性别时,这是可行的,但这也适用于诺瓦克。 我只想在字符串结束时更改最后一个字符

ski
cki

当最后一个字符是另一个字符时,我不想更改/替换任何内容。 我的实际代码:

<?php
$string = 'Nowak';
$temp = rtrim($string, "ki ka");
$sex = 'm';
if($sex == 'k')
{
    $temp.='ka';
}
else
{
    $temp.='ki';
}
?>

<h1>Before change: <?=$string;?></h1>
<br>
<h1>gender: <?=$sex;?></h1>
<br>
<h1>After change: <?=$temp;?></h1>
这应该起作用:

$name = 'Kowalski';

// Get the last three characters
$last_three = substr($name, -3);

// Based on last three characters, substr() and append as needed
switch($last_three)
{
    case 'ski':
        $name = substr($name, 0, -3).'ska';
        break;
    case 'cki':
        $name = substr($name, 0, -3).'cka';
        break;
}

echo $name;

preg_替换“/[sc]ki$/”,$1ka,$string;RTFM:第二个参数是一个字符掩码,而不是要剥离的字符串列表。ki-ka的执行就像kia[space]一样,并从字符串末尾删除所有/所有这些字符,而不管它们的出现顺序如何。谢谢大家的回答。
$name = 'Kowalski';

// Get the last three characters
$last_three = substr($name, -3);

// Based on last three characters, substr() and append as needed
switch($last_three)
{
    case 'ski':
        $name = substr($name, 0, -3).'ska';
        break;
    case 'cki':
        $name = substr($name, 0, -3).'cka';
        break;
}

echo $name;