Where should I put my mirror? This is a mirror: |. I just found out that you can stick a mirror in the middle of a string if the string can be mirrored on itself! For example, the string abccba. If you cut it in half the two halves are mirror images of each other:
abc  &lt;--&gt;  cba

So, we can stick a mirror in the middle of the string, and our new string is abc|cba. Sometimes, only part of the string can be mirrored on itself. For example, the string &quot;mirror&quot;. The two r's are mirrored, but the rest of the string isn't. That's OK, we'll just remove the parts of the string that don't mirror each other, and we get the following string:
r|r

Some strings could be mirrored in multiple places. For example, &quot;Hello World, xyzzyx&quot;. I like having a lot of text reflected in my mirror, so you need to find the best place to put my mirror. In this case, you should output the longer mirrored string and just like our last example, remove everything else. This string becomes:
xyz|zyx

Some strings look like they can be mirrored, but actually can not. If a string cannot be mirrored anywhere, you should output nothing.
The challenge:
Given a string containing only printable-ascii, find the best place to put my mirror. In other words,

Find the largest even-length palindromic substring, then output it with a pipe character '|' in the middle of it.

The input will be 1-50 characters long.
You can assume that the input will not contain mirrors | or newlines. Beyond that, all printable-ascii characters are fair game. If the longest mirrored substring is tied between two substrings, you can choose which one to output. For example, for the string &quot;abba ollo&quot;, you must output &quot;ab|ba&quot; or &quot;ol|lo&quot;, but it doesn't matter which one you output. Strings are case-sensitive, e.g. &quot;ABba&quot; should not output &quot;AB|ba&quot;, it should output the empty string.
Sample IO:
&quot;Hello World&quot;     --&gt; &quot;l|l&quot;
&quot;Programming Puzzles and Code-Golf&quot;     --&gt; Either &quot;m|m&quot; or &quot;z|z&quot;
&quot;abcba&quot;           --&gt; &quot;&quot;
&quot;Hulluh&quot;          --&gt; &quot;ul|lu&quot;
&quot;abcdefggfedcba&quot;  --&gt; &quot;abcdefg|gfedcba&quot;
&quot;abcdefggfabc&quot;    --&gt; &quot;fg|gf&quot;
&quot;AbbA&quot;            --&gt; &quot;Ab|bA&quot;
&quot;This input is a lot like the last one, but with more characters that don't change the output. AbbA&quot; --&gt; &quot;Ab|bA&quot;

As usual, this is code-golf, so standard loopholes apply, and the shortest answer in bytes wins!
Pyth - 19 17 15 13 bytes
Thanks to @FryAmTheEggman for saving me two bytes.
ARRGH the special case for no answer. Solved that!
e_I#jL\|cL2.:

Test Suite.
e                Last element in list, this works out to longest one
  _I             Invariance under reverse, this detect palindrome
   #             Filter
   jL            Map join
    \|           By &quot;|&quot;
    cL2          Map chop in two pieces
     .:Q)        Substrings. Implicit Q). ) makes it do all substrings.