Formula to replace special characters - slug creation


#1

We’re a film festival looking to pull the titles of our submissions in order to create slugs that can be used to create virtual posts on our WordPress site.

I need a way to parse just the text from the submission, with the ability to remove special characters (i.e. " ’ ! ? ; : @ # $ % ^ etc.).

I’ve gotten to this point so far:

LOWER(SUBSTITUTE({English Title}, " ", "-"))

This allows me to hyphenate the titles, but still includes special characters. Is anyone aware of a workaround for this, or do I need to manually create my slugs in this case?

Cheers!


#2

Well, you can fit it all into one formula with nested substitutions… not too hairy but still have to add each slug. Got you started…

SUBSTITUTE(SUBSTITUTE(SUBSTITUTE({English Title},"!",""),"#",""),"*","")

#3

If it doesn’t have to be instant you can do this with Zapier pretty easily. Their text formatting action is quite powerful and they offer a free plan, so if you don’t mind waiting 5-15 minutes for Zapier to process the titles for you (or you don’t mind pressing a button each time you need it to happen) then you won’t have to next a bunch of substitutions. That definitely works, but I know how messy it can get when you have a lot of things nested and, personally, I start making typos when there’s too much going on in the formula entry area. It’s so small and you can’t indent! Hopefully that’ll change in the future, though.

Anyway, if you’re not sure how to do this in Zapier and want to try, just let me know and I’ll walk you through it. :slight_smile:


#4

I wonder if there is another way to achieve this without using Zapier, since I need instant re-formatting of addresses in Spanish to a url-friendly format, and I’ve found myself doing this:

`SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(venue_full_address,"á","a"),"é","e"),"í","i"),"ó","o"),"ú","u"),"ü","u"),".",""),"ñ","n")`

And still need to keep going with all the capital letters, symbols, and so on… It doesn’t look quite right to have such a big formula, even though it actually works.

Any ideas?


#5

Hi Andrés, I have the same issue. What I did was add a column with the same formula you just posted. And then, I added another column which “transforms” that column into UPPERCASE. In my case I did this to get my Client Names “standard”. If you are aiming to have a url-friendly maybe you could do the same but with LOWERCASE. I hope that helps.


#6

This formula will lowercase your URLs and replace special characters. (Currently, it replaces space characters with %20, so you’ll want to change that to a hyphen.)

LOWER(
 SUBSTITUTE(
  SUBSTITUTE(
   SUBSTITUTE(
    SUBSTITUTE(
     SUBSTITUTE(
      SUBSTITUTE(
       SUBSTITUTE(
        SUBSTITUTE(
         SUBSTITUTE(
          SUBSTITUTE(
           SUBSTITUTE(
            SUBSTITUTE(
             SUBSTITUTE(
              SUBSTITUTE(
               SUBSTITUTE(
                SUBSTITUTE(
                 SUBSTITUTE({name},"%","%25"),
                " ","%20"),
               "!","%21"),
              "#","%23"),
             "$","%24"),
            "'","%27"),
           "(","%28"),
          ")","%29"),
         "*","%2A"),
        "+","%2B"),
       ",","%2C"),
      ":","%3A"),
     ";","%3B"),
    "=","%3D"),
   "@","%40"),
  "[","%5B"),
 "]","%5D"))

@Andres_Gomez
As @Kenneth_Sly mentions, surrounding your original text field with either UPPER() or LOWER() cuts the amount of work you need do by half. Beyond that, you’re on the right track by defining a bunch of nested SUBSTITUTES(). For a recent project, I had to build a query system that could search an international database of names, which required me to wrap the field to be matched with innumerable SUBSTITUTES()s replacing accented, Germanic, and Scandinavian characters with their English approximations. (While the data to be searched was often sourced internationally, I had the luxury of assuming the search terms, at least, would be entered by employees at the client’s New York-based headquarters, using plain old U.S. ASCII keyboards.)

Fortunately, Airtable appears to handle SUBSTITUTE()s with relatively little overhead; in tests I’ve performed comparing using a multiply-substituted text value in a calculation versus using a ‘pre-cooked’ version after all such substitutions had been performed, the difference in processing speed was indiscernible to the user; network delay, PC and browser load, and overall Airtable response time all caused greater variation in perceived lag. Even the SUBSTITUTE()-laden formula for my Soundex implementation seems to operate friskily enough.