у меня есть следующий массив
[0] => 1009
[1] => 1033
[2] => 2052
[3] => ANNEX 4E
[4] => Bill of Lading
[5] => CERTIFICATE OF ANALYSIS
[6] => CERTIFICATE OF ORIGIN
[7] => DHL - 5130431633
Я хочу удалить значение с DHL, за которым следует любое число. Любое значение, содержащее DHL, я хочу удалить.
например DHL — 5130431633 или DHL — 51304345654 должен быть удален номер перед DHL не имеет значения
я использовал следующий код, но он не работает
$xmlarrayresultdocsave = preg_grep("/^DHL$/i", $xmlarrayresultdocsave,
PREG_GREP_INVERT);
Ваше регулярное выражение ищет DHL
исключительно на линии, а не на всю строку. Вы хотите сделать:
/^DHL.*$/i
Какие совпадения DHL
и все остальное до конца строки.
Следующий код будет делать именно то, что вы хотите.
$haystack = array(
'Horse',
'DHL',
'DHL - 123',
'Pedestrian',
'Philosopher',
'DHL-123',
'DHL - 123'
);
$needle = 'DHL - ';
// Find all values with DHL
$test = array_filter($haystack, function($el) use ($needle) {
return (strpos($el, $needle) !== false);
});
// Unset the values
foreach (array_keys($foundRows) as $key) {
unset($haystack[$key]);
}