PHPize Online / SQLize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
Copy Clear
Copy Format Clear
<?php $input1 = ' имя1;им,я2;имя3 имя4;имя5;имя6 ,имя7;имя,8;имя9 '; // ; $input2 = ' ;;;;;;;;;;;;ааа,ааа;;;;;;;;;;; А;ааа,ааа;а B;bbb,bbb;b '; // , $input3 = ' имя1;имя2;имя3 им;я4,имя5,им;я6 имя4;имя5;имя6 '; // ; $incorrectInput1 = ' имя1;им,я2;имя3 имя4;имя5;имя6 имя;имя;имя;имя ,имя7;имя,8;имя,9 '; $incorrectInput2 = ' имя1;имя2;имя3 имя4,имя5,имя6 '; $incorrectInput3 = ' А;ааа,ааа;а B;bbb,bbb;b '; $incorrectInput4 = ' имя1;имя2;имя3 имя4,имя5,имя6 имя4;имя5;имя6 '; function detectSeparator(string $str): ?string { $rows = preg_split('/(\r\n|\r|\n)/', trim($str)); $rowCounts = [ "\t" => [], ',' => [], ';' => [], ]; // foreach ($rows as $row) { // foreach ($rowCounts as $symbol => &$occurs) { // $count = substr_count($row, $symbol); // // if(!in_array($count, $occurs, true)) { // $occurs[] = $count; // } // } // } foreach ($rows as $row) { $tabsCount = substr_count($row, "\t"); if (!in_array($tabsCount, $rowCounts, true)) { $rowCounts["\t"][] = $tabsCount; } $commaCount = substr_count($row, ','); if (!in_array($commaCount, $rowCounts, true)) { $rowCounts[','][] = $commaCount; } $semicolonCount = substr_count($row, ';'); if (!in_array($semicolonCount, $rowCounts, true)) { $rowCounts[';'][] = $semicolonCount; } } $rowCounts = array_filter($rowCounts, function ($occurs) { $occursCount = count($occurs); // Remove elements that occurs different times if ($occursCount > 1) { return false; } // Remove elements that occurs only zero times if ($occursCount === 1 && reset($occurs) === 0) { return false; } return true; }); if (count($rowCounts) === 1) { return array_key_first($rowCounts); } return null; } var_dump(detectSeparator($input1)); // ; var_dump(detectSeparator($input2)); // , var_dump(detectSeparator($input3)); // ; var_dump(detectSeparator($incorrectInput1)); // null var_dump(detectSeparator($incorrectInput2)); // null var_dump(detectSeparator($incorrectInput3)); // null var_dump(detectSeparator($incorrectInput4)); // null
Show:  
Copy Clear