It is easier to get a stain out of a white top, blouse, t-shirt because you can use bleach.
Wet the stain, put bleach on a Q-TIP - dab the stain, let it sit for about 5 minutes - no longer - then rinse the bleach out and toss in the wash with other whites. This works well if done before a washing and drying, but still works sometimes even when the stain is 'set'.
Another thing that is great is "Restoration Soap" that is used to brighten antique linens. I soaked a pair of my husbands 'dog walking' slacks and they came out almost decent. They are khaki, so it works on colors. You can search it on the internet, that is how I found it. It takes oxidized stains out of linens better than you would believe.