Octal para iniciar sesión en una cadena de matriz

Quiero convertir signo octal como \46 al signo normal como & .
El problema es que la entrada se crea con preg_match_all() , se coloca en una matriz y luego se recupera.

Si ingresara manualmente la notación octal \46 en variable con comillas dobles, como
$input="\046";
entonces PHP lo convertiría muy bien.

Pero cuando lo tengo en una matriz de preg_match_all() , lo devuelve sin convertir.

Quiero convertirlo porque quiero consultar la base de datos (mysql) que tiene registros con el signo “&” como símbolo comercial.

Usar stripcslashes()

De la documentación de stripslashes :

string stripcslashes ( string $str )
Devuelve una cadena con barras invertidas eliminadas.
Reconoce la representación de tipo C \ n, \ r …, octal y hexadecimal.

  $b"; ?> outputs: a \046 b \075 c ==> a & b = c 

hay un truco de reemplazo interesante (o más bien pirateo)

 $a = 'a \046 b \075 c'; echo preg_replace('~\\\\(0\d\d)~e', '"\\\\$1"', $a); 

No es particularmente elegante, pero puedes eval la cadena. Por supuesto, esto evaluará cualquier otra cosa en la cadena también, pero tal vez eso es lo que quieres. Si quiere evitar la evaluación de variables, debe reemplazar $ con \ $ primero.

  

pero cuando lo tengo en conjunto desde todos los preg match, lo devuelve sin convertir.

Tratar:

 $tmp=implode('', $array_from_pregmatch); $input="$tmp";