[英]PHP find first of occurrence of string
我有如下所示的數據字符串,我一直在努力尋找如何拆分數據以便有效使用它的方法。
"United States FirstName: Mike LastName: Doe City: Chicago"
我需要將字符串拆分為子字符串,列表可能並不總是以相同的順序排列。
例如,它可能如下所示變化:
"United States City: Chicago FirstName: Mike LastName: Doe"
"CanadaFirstName: Mike City: Chicago LastName: Doe"
我需要找到“美國”之后的第一個參數。 可以是“城市:”,“名字:”或“姓氏:”。 而且,我還需要知道第一個參數的開始位置。
提前致謝!
只要FirstName:
, LastName:
和City:
始終在其中,您就應該能夠獲取這三個位置,並使用min()首先查看哪個位置。
$string = "United States City: Chicago FirstName: Mike LastName: Doe";
$firstname = strpos($string, 'FirstName:');
$lastname = strpos($string, 'LastName:');
$city = strpos($string, 'City:');
$position = min($firstname, $lastname, $city);
switch($position){
case $firstname:
$first_parameter = 'FirstName:';
break;
case $lastname:
$first_parameter = 'LastName:';
break;
case $city:
$first_parameter = 'City:';
break;
}
您將擁有第一個參數和位置。
我認為最干凈,最直接的方法是將參數放入數組中,然后遍歷它(盡管性感的正則表達式很誘人)。
$params = array( 'FirstName:', 'LastName:', 'City:', ); $first = null; # First parameter $first_pos = null; # First parameter position foreach($params as $var) { $pos = strpos($string, $var); if($pos < $first_pos || null === $first_pos) { $first = $var; $first_pos = $pos; } }
如果更改參數,則只需更改數組。
首先,剝離“美國”: $str2 = substr($string, 0, strlen("United States "))
然后找到字段: preg_match('/^([^:]+): /', $str2)
第一個參數的位置應為常數: strlen("United States ")
$string = "United States FirstName: Mike LastName: Doe City: Chicago";
$i = strpos($string, ":"); // Find the first colon
while ($string[$i] != " ") { $i--; } // work backwards until we hit a space
// First parameter's name now starts at $i + 1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.