Delete blocks in any area without dropping any items

Java 1.19.2 fill replace seems to be the closest thing to what I want so far, but still some items drop (amethyst shards, torches, doors, paintings, lanterns). I thought about doing two commands with also kill @e[type=item,distance=..100] or something, but that could get other items that I don't want to delete by mistake. Is there a better way to do this?
Continue to help post