1
我有以下代碼,它可以在單輸入下工作,但在複合輸出時失敗。 打印數組函數確認數組值正確。我不知道問題出在哪裏。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);
您的預期產出是多少?我認爲你的代碼可以優化爲只使用一個正則表達式。另外'function1'對於一個函數來說是一個糟糕的名字。如果你不能想到一個功能的好名字,那麼這個功能可能會做一些非常奇怪的事情,或者太多的事情。 – Halcyon
你究竟想用這段代碼實現什麼?可能有更好的方法來做到這一點。 –