1
i 다음 코드를 사용하면 단일 입력에서는 작동하지만 복합 출력에서는 실패합니다. print 배열 함수는 배열 값이 올바른지 확인합니다. 문제가 어디 있는지 모르겠습니다.PHP 정규식이 배열 문자열 값으로 작동하지 않습니다.
단일 입력 :
1:10pm[Sat & Sun Only]
복합 입력 :
10:35am, 12:40pm, 1:10pm[Sat & Sun Only]
코드 발췌은 다음과 같습니다 :
function function1($input)
{
$key1 = ', ';
if (strpos($input, $key1) !== false) {
$commas = substr_count($input, $key1);
$arraySize = $commas + 1;
$result1 = explode($key1, $input);
} else {
$result1[0] = $input;
}
foreach ($result1 as $val) {
if (preg_match('/^\d{1,2}.\d{2}am\[(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun).Only\]$/', $input)) {
echo "Match was found <br />";
} else if (preg_match('/^\d{1,2}.\d{2}pm\[(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun).Only\]$/', $input)) {
echo "Match was found 2<br />";
} else if (preg_match('/^\d{1,2}.\d{2}am\[(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun)-(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun).Only\]$/', $input)) {
echo "Match was found 3<br />";
} else if (preg_match('/^\d{1,2}.\d{2}pm\[(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun)-(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun).Only\]$/', $input)) {
echo "Match was found 4<br />";
} else if (preg_match('/^\d{1,2}.\d{2}am\[(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun) & (?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun).Only\]$/', $input)) {
echo "Match was found 5<br />";
} else if (preg_match('/^\d{1,2}.\d{2}pm\[(?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun) & (?:Mon|Tues|Wed|Thurs|Fri|Sat|Sun).Only\]$/', $input)) {
echo "Match was found 6<br />";
} else {
echo 'Not found ';
}
//print $val;
}
print_r($result1);
}
$imran = '10:35am, 12:40pm, 1:10pm[Sat & Sun Only]';
function1($imran);
예상되는 결과는 무엇입니까? 나는 당신의 코드가 단지 하나의 regexp를 사용하도록 최적화 될 수 있다고 생각한다. 또한'function1'은 함수의 끔찍한 이름입니다. 함수에 대한 좋은 이름을 생각할 수 없다면 그 함수는 아주 이상하거나 너무 많은 것을 할 것입니다. – Halcyon
이 코드를 사용하여 정확히 달성하려는 것은 무엇입니까? 아마 이것을하는 더 좋은 방법이있을 것입니다. –