Greatest common substring Create a program or function which takes a list of strings as input, and outputs the longest string that is a substring of all input strings. If there are several substrings of equal length, and no longer substring, output any one of them.

This may mean outputting the empty string.
If there are several valid outputs, you may output any one of them. You are not required to give consistent output for a given input so long as the output is always valid.
There will always be at least one string in the input, but there might not be a non-empty string.
All printable ASCII characters may appear in the input. You may assume those are the only characters that appear.
You may take input or produce output by any of the default methods.
Standard loopholes aren't allowed.
This is code-golf - the fewer bytes of code, the better.

Test cases:
[Inputs] -&gt; [Valid outputs (choose one)]
[&quot;hello&quot;, &quot;'ello&quot;] -&gt; [&quot;ello&quot;]
[&quot;very&quot;, &quot;much&quot;, &quot;different&quot;] -&gt; [&quot;&quot;]
[&quot;empty&quot;, &quot;&quot;, &quot;STRING&quot;] -&gt; [&quot;&quot;]
[&quot;identical&quot;, &quot;identical&quot;] -&gt; [&quot;identical&quot;]
[&quot;string&quot;, &quot;stRIng&quot;] -&gt; [&quot;st&quot;, &quot;ng&quot;]
[&quot;this one&quot;, &quot;is a substring of this one&quot;] -&gt; [&quot;this one&quot;]
[&quot;just one&quot;] -&gt; [&quot;just one&quot;]
[&quot;&quot;, &quot;&quot;, &quot;&quot;] -&gt; [&quot;&quot;]
[&quot;many outputs&quot;, &quot;stuptuo ynam&quot;] -&gt; [&quot;m&quot;, &quot;a&quot;, &quot;n&quot;, &quot;y&quot;, &quot; &quot;, &quot;o&quot;, &quot;u&quot;, &quot;t&quot;, &quot;p&quot;, &quot;s&quot;]
[&quot;many inputs&quot;, &quot;any inputs&quot;, &quot;ny iii&quot;, &quot;yanny&quot;] -&gt; [&quot;ny&quot;]
[&quot;%%not&amp;&quot;, &quot;ju&amp;#st&quot;, &quot;[&amp;]alpha_numeric&quot;] -&gt; [&quot;&amp;&quot;]
Brachylog (v2), 3 9 bytes

{sᵛ}ᶠlᵒtw


Try it online!

Full program. Input from standard input (as a JSON-style list of strings), output to standard output.

Explanation

{sᵛ}ᶠlᵒtw
 s         Find a substring
  ᵛ          of every element {of the input}; the same one for each
{  }ᶠ      Convert generator to list
     lᵒt   Take list element with maximum length
        w  Output it


Apparently, the tiebreak order on s is not what it is in nearly everything else in Brachylog, so we need to manually override it to produce the longest output. (That's a bit frustrating: four extra characters for the override, plus two grouping characters because Brachylog doesn't parse two metapredicates in a row.)

Brachylog's s doesn't return empty substrings, so we need a bit of a trick to get around that: instead of making a function submission (which is what's normally done), we write a full program, outputting to standard output. That way, if there's a common substring, we just output it, and we're done. If there isn't a common substring, the program errors out – but it still prints nothing to standard output, thus it outputs the null string as intended.