This is my code:
foreach ($quote_bids as $line) {
preg_match("is_bid_approved=(\d+)", $line, $matches);
if (isset($matches[1])) {
$is_bid_approved_values[] = intval($matches[1]);
}
}
$value_counts = collect($is_bid_approved_values)->countBy();
}
The error “preg_match(): Delimiter must not be alphanumeric or backslash” occurs because the regular expression you are using contains a delimiter that is not allowed. Delimiters are used to separate the regular expression pattern from the rest of the string. The allowed delimiters are any punctuation character that is not alphanumeric, such as forward slash (/
), colon (:
), or pipe (|
).
In your case, you are using the regular expression "is_bid_approved=(\d+)"
to match a string that starts with "is_bid_approved="
, followed by a digit, and ends with no additional characters. The delimiter you are using is the equals sign (=
). However, the equals sign is alphanumeric, which means it is not allowed as a delimiter.
To fix this error, you can either change the delimiter to a non-alphanumeric character, or you can escape the equals sign so that it is not interpreted as a delimiter. For example, you could change the regular expression to "is_bid_approved=\(?\d+\)"
. This would use a question mark (?
) as the delimiter, which is allowed.
updated code:
foreach ($quote_bids as $line) {
preg_match("/is_bid_approved=(\d+)/", $line, $matches);
if (isset($matches[1])) {
$is_bid_approved_values[] = intval($matches[1]);
}
}
$value_counts = collect($is_bid_approved_values)->countBy();