which just backslashes all non-word characters. It's normally used so that characters in the string that are special characters in regexes aren't used inappropriately.
I think PHP uses a more logical version whereby only meta characters are replaced, hence the name quotemeta, and not all non-word characters like Perl.
andy, when you say it "wouldn't work" do you mean it would give a syntax error, or that it wouldn't make the substitution? and was your example supposed to change the square brackets as well as the text? i guess by this i mean, it would only match the text if the text was enclosed in square brackets? syntax is making my head hurt!