PHP – file_get_contents () con variable en cadena?

Estoy tratando de enviar un pedido por correo electrónico con PHPMailer al cliente cuando se recibe este pedido. Intenté hacer eso de esta manera:

$email_page = file_get_contents("email_order_html.php?order=$order_id"); 

Quiero obtener los contenidos de esta página como una cadena para poder enviar esto con PHPMailer pero esta función no ejecutará la página debido a la variable $ order_id en ella, ¿cómo puedo solucionar esto?

Solutions Collecting From Web of "PHP – file_get_contents () con variable en cadena?"

Solo puede agregar Parámetros de consulta cuando use file_get_contents con un Wrapper de Url Aware Stream, por ejemplo, funcionaría para http://localhost/yourfile.php?foo=bar . Al hacerlo, se emitiría una solicitud de obtención de HTTP a un servidor web en localhost con los parámetros de consulta especificados. La solicitud se procesará y se devolverá el resultado de la solicitud.

Al usar file_get_contents con un nombre de archivo solamente, no habrá ninguna solicitud HTTP. La llamada irá directamente a su sistema de archivos. Su sistema de archivos no es un servidor web. PHP solo leerá el contenido del archivo. No ejecutará el script PHP y solo devolverá el texto en él.

Debe include el archivo y llamar a lo que haga el script manualmente. Si el script depende del argumento de la orden, $_GET['order'] = $orderId mediante $_GET['order'] = $orderId antes de incluir el archivo.

email_template.php

  

{foo}

{bar}

sendmail.php

 ../ $mail = new PHPMailer(); //get the file: $body = file_get_contents('email_template.php'); $body = eregi_replace("[\]",'',$body); //setup vars to replace $vars = array('{foo}','{bar}'); $values = array($foor,$bar); //replace vars $body = str_replace($vars,$values,$body); //add the html tot the body $mail->MsgHTML($body); /... 

Espero que ayude a alguien;)

Una de las mejores formas de hacerlo sería utilizar el almacenamiento en búferes de salida combinado con la simple inclusión del script de creación de contenido.

 // $order_id is certainly available in place where file_get_contents has been used... ob_start(); require 'email_order_html.php'; $email_page = ob_get_clean(); 
 use require("email_order_html.php"); 

y $order_id estará disponible en su archivo

Como dijo Gordon, file_get_contents() lee archivos del sistema de archivos – archivos de texto o binarios, es decir, no el resultado de la ejecución de esos archivos.

Puede usar Curl ( documentos ) para hacer eso, en caso de que quiera mover la secuencia de comandos a un servidor por separado. Por el momento, simplemente incluir el archivo y pasar los argumentos directamente a la función que desea es un enfoque más sensible.