Eso | significa 'O a nivel de bit', que convertirá las cadenas en binarias, luego las superpondrán entre sí para calcular el resultado usando OR lógico para cada posición, es decir, si cualquiera de ellas tiene un 1 en esa posición, el resultado tendrá un 1, de lo contrario obtendrá 0 0.
En este caso, está haciendo esto con los códigos de caracteres ascii numéricos de cada carácter, lo que a veces lleva a nuevos códigos de caracteres y a veces a basura, que no se procesarán. Esta es la razón por la cual el comienzo de 'Hola mundo' está en mal estado, donde está superpuesto con 'prueba', pero el final está bien porque no tiene ningún 1 añadido por otra cadena en ese punto. Consulte here para obtener un ejemplo más detallado del manual (utiliza XOR, pero la misma idea).
Uso. para la concatenación
http://www.php.net/manual/en/language.operators.bitwise.php –
¿en qué idioma 'concatena? –
Hasta donde yo sé, la mayoría del lenguaje no usa '|' para concat string. Normalmente usa '.' o' + ' – Rezigned