2015-05-02 39 views
0

我是一個VB.NET開發人員在PHP項目上工作,我試圖將我的VB.NET函數轉換爲PHP,但沒有得到所需的結果。調試後,我發現substr函數有問題。substr函數返回錯誤的結果在php

在VB.NET

我使用

mid(105,2,1) 
This giving me output 0 

但是在PHP

substr(105,2,1) 
Giving me output 5 
+4

閱讀手冊http://php.net/substr – Saty

+4

我不知道它是如何在VB.NET中索引的,但是對於PHP而言,它的索引基於0,因此請更改2 - > 1。 '$ str =「105」;','$ str [0] - > 1','$ str [1] - > 0','$ str [2] - > 5' – Rizier123

+2

'echo substr(105,1 ,1);' –

回答

3

如果你想獲得0PHP你的代碼應該是:

echo substr(105,1,1); 

Outpu T:

0 

如果你想知道爲什麼,閱讀:

mid功能VB.NET

Public Shared Function Mid(_ 
    ByVal str As String, _ 
    ByVal Start As Integer, _ 
    Optional ByVal Length As Integer _ 
) As String 

STR - Requir編輯。從中返回字符的字符串表達式。

開始 - 必填。整數表達式。要返回的字符的起始位置。如果Start大於str中的字符數,則Mid函數會返回一個零長度字符串(「」)。 開始是一個基於

長度可選。整數表達式。要返回的字符數。如果省略或文本中的長度字符數少於(包括位置Start處的字符),則返回從起始位置到字符串末尾的所有字符。

' Creates text string. 
Dim TestString As String = "Mid Function Demo" 
' Returns "Mid". 
Dim FirstWord As String = Mid(TestString, 1, 3) 
' Returns "Demo". 
Dim LastWord As String = Mid(TestString, 14, 4) 
' Returns "Function Demo". 
Dim MidWords As String = Mid(TestString, 5) 

substr功能PHP

string substr (string $string , int $start [, int $length ]) 

- 輸入字符串。必須是一個字符或更長。

開始 - 如果啓動非負,返回的字符串將在字符串中的start'th位置開始,從零計數。例如,在字符串'abcdef'中,位置0處的字符是'a',位置2處的字符是'c',等等。

如果開始爲負數,則返回的字符串將從字符串結尾的第start個字符處開始。

如果字符串小於或等於起始字符長,則返回FALSE。

<?php 
echo substr('abcdef', 1);  // bcdef 
echo substr('abcdef', 1, 3); // bcd 
echo substr('abcdef', 0, 4); // abcd 
echo substr('abcdef', 0, 8); // abcdef 
echo substr('abcdef', -1, 1); // f 
?> 

在瞭解更多:

https://msdn.microsoft.com/en-us/library/05e63829%28v=vs.90%29.aspx

http://php.net/manual/en/function.substr.php

+0

@ Rizier123你讀了整個兩頁(鏈接)?並且您無法在此鏈接中看到任何附加信息? –

+0

@ Rizier123我只想寫一個有用的問題的答案,爲此我需要寫一些關於函數的解釋。真的,我不明白我做錯了什麼。 –

1

substr()取入2個參數和一個可選的第三個參數

(字符串,開始位置,*結果長度)

*注意:結果長度

  • 如果+然後從開始偏移返回結果,
  • 如果-ve然後從返回的結果
  • 偏移

例如:

substr("abcde",2,1); 

    // string: "abcde" 
    // start position: 2 => returns "cde" 
    // result length: 1 => returns "c" 


    substr(105,2,1); 

    // string: "105" 
    // start position: 2 => returns "5" 
    // result length: 1 => returns "5" 

你可以test substr online here。希望這可以幫助。