没有正则表达式的 Piglatin 程序的 PHP 脚本——如何考虑以元音字母 "th"或 "sh"开头的单词?

标签 php arrays string if-statement foreach

基本上,我正在尝试用 PHP 编写一个非常基本的程序,它只接受用户输入并使用 PHP 将其转换为 Piglatin,而不使用正则表达式。这是我的代码到目前为止的样子,很好:

<?php # script
$original = $_REQUEST['original'];
$array = explode(" ", $original);

$piglatin = "";
foreach($array as $word)
{
    $word = trim($word);
    $first = substr($word,0,1);
    $thsh = substr($word,1,2);
    $thshrest = substr($word,2, strlen($word)-2);
    $rest = substr($word,1,strlen($word)-1);

    if(trim($word)) 
    {
        $piglatin .= (strlen($word)==1)?$first." ":$rest.$first. "ay ";
    }
}

echo $original ." becomes: ".$piglatin;
?>

除了它没有考虑特殊情况,比如如果一个单词以元音开头(在这种情况下,单词“igloo”应该打印为“iglooway”),或者如果它以“th"或 "sh"(在这种情况下,例如单词 "thimble"应该打印为 "imblethy",取前两个字母并将它们放在末尾,而不是仅仅第一个字母。)

我已经开始使用以“th”和“sh”开头的字符串创建变量(参见 $thsh 和 $thshrest),但我真的很困惑我应该从哪里开始?

感谢所有帮助,谢谢!

最佳答案

是的,如果不使用正则表达式,您将需要手动检查所有情况:

if ($first == "a" || $first == "e" || $first == "i" || $first == "o" || $first == "u"){
  $piglatin .= (strlen($word)==1)?$first." ":$word. "ay ";
} elseif ($thsh == "th" || $thsh == "sh") {
  $piglatin .= (strlen($word)==1)?$first." ":$thshrest.$thsh. "ay ";
} else {
  $piglatin .= (strlen($word)==1)?$first." ":$rest.$first. "ay ";
}

(我没有测试过这段代码)

关于没有正则表达式的 Piglatin 程序的 PHP 脚本——如何考虑以元音字母 "th"或 "sh"开头的单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16204440/

相关文章:

php - 使用 Apache 和 PHP 连接到 MySQL

php - 在 PHP 中单独打印 MYSQL 表中的每一行

java - 我试图让我的程序继续请求输入并回答该输入

java - 在 try catch 后从 sql select 返回一个值

python - 为什么 python 字符串和元组是不可变的?

php - 来自 PHP 的 mp4 - 不在 HTML5 视频标签中播放

javascript - 如何在 Javascript 中的某个限制后打破数组

Java SQL 循环遍历字符串列表[]

c# - 到处查找枚举转换为字符串

javascript - 从 Bootstrap 模式形式更新数据库