我想将此函数转换为 PHP 函数

Posted

技术标签:

【中文标题】我想将此函数转换为 PHP 函数【英文标题】:i want to convert this function in to the Php function 【发布时间】:2015-07-21 20:34:25 【问题描述】:
private void CharsAvailable()
        
            int num = 0;
            int num2 = 0;
            string text = this.txtMessage.Text;
            if (this.chkSignature.Checked)
            
                text = text + Environment.NewLine + this.txtSignature.Text;
            
            else
            
                text = this.txtMessage.Text;
            
            int num3 = 0;
            while (num != 1 && num3 < this.txtMessage.TextLength)
            
                if (text[num3] < '0' || text[num3] > '9')
                
                    if (text[num3] < 'A' || text[num3] > 'Z')
                    
                      
                 ..............................
                   SOME CODE 
                 ............................

                if (num == 1)
                
                    int num4 = text.Length;
                    if (num4 <= 70)
                    
                        num4 = 1;
                    
                    else
                    
                        num4 += 62;
                        num4 -= num4 % 63;
                        num4 /= 63;
                    
                    frmCompose.isUnicodeFound = true;
                    this.lblChar.Text = string.Concat(new object[]
                    
                        text.Length,
                        " characters, ",
                        num4,
                        " SMS message(s)"
                    );
                
                else
                
                    int num4 = text.Length + num2;
                    if (num4 <= 160)
                    
                        num4 = 1;
                    
                    else
                    
                        num4 += 152;
                        num4 -= num4 % 153;
                        num4 /= 153;
                    
                    frmCompose.isUnicodeFound = false;
                    this.lblChar.Text = string.Concat(new object[]
                    
                        text.Length + num2,
                        " characters, ",
                        num4,
                        " SMS message(s)"
                    );
                
            

            //validation

                        if (this.txtMessage.Text.Trim().Length == 0)
                        
                            MessageBox.Show("Blank messages cannot send. Please type the message.", "Blank Message");
                        
                        else if (frmCompose.isUnicodeFound && this.cmbLanguage.SelectedIndex == 0)
                        
                            MessageBox.Show("Please choose 'Unicode' in Language dropdown to send message(s) in non English.”", "Unicode Message");
                        enter code here

我需要一些帮助来将此函数转换为 php 函数。 php代码中相关函数中的类似语法或类似函数是什么?任何人都可以提供帮助。如果我得到一些需要进行的更改列表,那就太好了。在此先感谢。

【问题讨论】:

所有 if 语句之母:D 什么鬼?!为什么 1000 次相同的条件?文本[num3] != '?'为什么不只增加和检查其他情况? 根据经验,任何超过 7 的嵌套都应该重构。 @Abhicenation,首先发布一个关于如何简化深层嵌套 if 语句的问题。 它并不复杂,它很糟糕。有更好的方法来检查字符是否有效。看看正则表达式什么的。 【参考方案1】:

首先,我强烈建议在将其转换为 PHP 之前重构您的代码。这只需通过两个数组并在检查字符时对它们进行循环来完成。这将替换大部分语句。

一个例子(在 php 中):

 $characters = array("", "", "\\", "[", "]", "~", "|", "€");
    $text = array();
    $num = 0;
    $num2 = 0;
    $num3 = 0;

    foreach($characters as $char)
    
        if($text[$num3] == $char  ) 
        
            $num2++;
        else
        
            $num = 1;
        
    

我试图保持当前代码的逻辑不变。仅实施较少过时/冗余。

现在我们只剩下前 3 个 if 语句了。这是正则表达式的完美候选。在 PHP 中使用 preg_match 可以轻松替换这 3 个 if 语句。

一个 PHP 示例:

    $text = "abcABC123";
    $regex = "/[a-zA-Z0-9]/";

    if(preg_match($regex, $text))
    
        //Do stuff
    

其余的代码相当简单,主要是逻辑。有一件事是肯定的,请研究如何更有效地实现某些事情。它可以帮助您和将来使用该代码的人:)

【讨论】:

以上是关于我想将此函数转换为 PHP 函数的主要内容,如果未能解决你的问题,请参考以下文章

将高斯函数转换为 SSE

我想将此代码从 SAS 转换为 ECL(HPCC)

将聚合函数从 R 转换为 python [重复]

使用html中的按钮onclick将php数组发送到javascript函数

获取 Javascript 变量并将其传递给 PHP 函数 [重复]

要求没有babel的电子文件