把PHP内容放在PHP函数之间

时间:2017-01-05 06:40:08

标签: php html function

我需要在变量中放入一些html内容以使用mpdf生成pdf,有没有办法将html内容分配给php函数中的变量。

这就是我想要的。

<?php
$data=array(
"amount"=>11,
"recurringTransaction"=>"ECOMMERCE",
"merchantTransactionId"=>3,
"softDescriptor"=>"DescTest",
"cardHolderInfo"=>array(
    "firstName"=>"test first name",
    "lastName"=>"test last name"
),
"currency"=>"GBP",
"creditCard"=>array(
    "expirationYear"=>2018,
    "securityCode"=>837,
    "expirationMonth"=>"02",
    "cardNumber"=>4263982640269299
),
"cardTransactionType"=>"AUTH_CAPTURE"
);
$data_json=json_encode($data,JSON_BIGINT_AS_STRING | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE );
$ch=curl_init();
curl_setopt_array($ch,array(
CURLOPT_VERBOSE=>true,
CURLOPT_POST=>true,
CURLOPT_URL=>'https://sandbox.bluesnap.com/services/2/transactions',
CURLOPT_HTTPHEADER=>array(
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=',
),
CURLOPT_POSTFIELDS=>$data_json,
CURLOPT_USERAGENT=>'curl/7.50.1',
));
curl_exec($ch);
curl_close($ch);

我需要的是html中的所有内容都分配给$ content变量。 它不起作用,因为它是在php执行函数之间。

4 个答案:

答案 0 :(得分:0)

试试这样。

function getInvoice($conn,$uid,$id,$invoice_no)
{    
     echo $something = "something";

     ob_start();

     $content='<html>    
     <body style="padding-top: 0px">
     <page>
     my html content                 
     </page><body>'.$something.'</body><html>';    

     $content .= ob_get_clean();
  }

?>

答案 1 :(得分:0)

使用输出缓冲区只会收集ob_start之后和ob_get_clean之前发送到stdout的数据。 您的代码已损坏,因为您似乎正在尝试在html中设置php变量$contents,然后收集

运行$contents .= ob_get_clean();时的结果被设置为此值 - 然后您将其作为html传递给mPDF以生成pdf文件。以下内容无效。

$content='<html>
<body style="padding-top: 0px">
<page>
my html content                 
</page><body>something</body><html>'

此外,使用.-是将两个字符串添加到一起。由于您希望$content包含有效的html,因此这很糟糕。

下面的修复可确保将(有效的html )内容收集到$content中,因为它似乎是您的意图。

function getInvoice($conn,$uid,$id,$invoice_no) {
    ob_start();
$content='<html>
<head>
<link rel="stylesheet" href="//classes.gymate.co.in/assets/bower_components/uikit/css/uikit.almost-flat.min.css" media="all">
<link rel="stylesheet" href="../assets/css/main.min.css" media="all">
<style>body{font-family:\'roboto\'; .md-card {box-shadow: none; } .uk-width-small-3-5 {width: 40%;}</style>
</head>
<body style="padding-top: 0px">
<page>
my html content                 
</page><body>' . "something" . '</body><html>';

    echo $content;

    $content = ob_get_clean();

    include("../plugins/mpdf/mpdf.php");
    $mpdf=new mPDF('utf-8', 'A4','','',10,10,5,5,5,5);
    $mpdf->SetFont('roboto');
    $mpdf->SetHTMLFooter('<p style="padding-top: 18px; font-size: 12px;"></p><p style="text-align:right; font-size: 12px;">Page {PAGENO} of {nbpg}</p></p>');
    //$stylesheet = file_get_contents('../assets/css/main.min.css');
    $mpdf->WriteHTML($stylesheet,1);
    $mpdf->writeHTML($content);
    $mpdf->Output("pdf-save-data/reciept.pdf","F");

    echo "PDF File Created";
}

答案 2 :(得分:0)

i

确保正确关闭单引号和双引号。

注意:另外我个人不希望在你将它变成变量时在html中给出换行符。

答案 3 :(得分:0)

您可以使用<<<htmlhtml来实现此目的。示例如下

enter image description here