php - 没有正则表达式的 PHP 中的 Piglatin 程序?

标签 php arrays string 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),但我真的很困惑我应该从哪里开始?

最佳答案

正则表达式解决方案(可能不是您想要的,但我想展示它是多么简单):

$pig_latin = preg_replace('#^([^aeiou]+)([aeiou]+)(.*)#', '$2$3$1ay', $original);
$pig_latin = preg_replace('#(^[aeiou].*)#', '$1way', $pig_latin);

关于php - 没有正则表达式的 PHP 中的 Piglatin 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16209290/

相关文章:

php - PayPal:IPN 和 PDT 协同工作 - 单项支付系统 - 无购物车

arrays - 什么情况下 "cannot convert "%d"(type untyped string) to type int"in Go?

c++ - 如何与数组 union 并保持可移植性?

c - 在c中对字符进行分组以形成字符串

php - 为自定义 Woocommerce 插件存储动态值

php - 如何使用链接输出的替代布局覆盖 mod_menu 的模板?

java - 从 AttributedString 获取文本(纯字符串)——怎么做,为什么这么难?

java - 如何将点击监听器添加到 Android/Java Textview 中的字符串中?

javascript - $.each 中的数组递增

php - 如果未找到多个硬件,请从列表中删除所有值