The easy, but bad answer is:
foreach(explode(' ', $tags) as $tag) {
// SELECT * FROM Stations WHERE tags LIKE '%$tag%'
}
or construct something to generate a query like:
SELECT *
FROM Stations
WHERE tags LIKE '%$tag1%'
OR tags LIKE '%$tag2%'
OR tags LIKE '%$tag3%'
...
But the solution in which the tables are properly normalized and are not likely to bring your servers to their knees trying to do wildcard matches on strings goes something like this:
TABLE stations
st_id UNSIGNED INTEGER NOT NULL AUTO_INCREMENT,
st_name VARCHAR(255),
...
PRIMARY KEY(st_id),
INDEX(st_name)
TABLE tags
tag_id UNSIGNED INTEGER NOT NULL AUTO_INCREMENT,
tag_name VARCHAR(64) NOT NULL,
PRIMARY KEY(tag_id),
UNIQUE(tag_name)
TABLE station_tags
st_id UNSIGNED INTEGER,
tag_id UNSIGNED INTEGER,
PRIMARY KEY(st_id, tag_id),
INDEX(tag_id),
FOREIGN KEY fk_st_id (st_id) REFERENCES stations(st_id) ON DELETE CASCADE,
FOREIGN KEY fk_tag_id (tag_id) REFERENCES tags(tag_id) ON DELETE CASCADE
This lets you define a tag once, assign unlimited tags to unlimited stations, manage tags centrally, use proper indexes, etc, etc.