How to dynamically replace placeholders on an Html table PHP and javascript

one text

I developed an invoice template designer as part of a project which can be used to design invoice templates. Once the invoice template is created its html is saved to the database ready to be used.

Now a user can create an invoice using the template but that is where my problem comes in. My invoice template is created with place holders and its a table. please check screenshot enter image description here

How can I replace the table cell values since it was created dynamically and there is no way I can access the table cells with a PHP loop. I really need ideas with possibly an example. This is my code:

if (!empty($_GET['invoice_id']) && $_GET['invoice_id']) {
    $invoice_id = $_GET['invoice_id'];
    $invoiceValues = getInvoice($invoice_id);       
    $invoiceItems = getInvoiceItems($invoice_id);   
}

$invoiceDate = date("d/M/Y, H:i:s", strtotime($invoiceValues['order_date']));

$template_name = getinvoicetemplatename();

$template = get_template($template_name[0]);

//replace template var with value
$token = array(
    '[Business_Name]'  => 'http://www.codexworld.com',
    '[Business_Address_1]' => 'CodexWorld',
    '[City]' => $userName,
    '[State]'=> $userEmail,
    '[Postal_Code]'  => 'http://www.codexworld.com',
    '[Business_Phone_Number]' => 'CodexWorld',
    '[Business_Email_Address]' => $userName,
    '[Client_Name]'=> $userEmail,
    '[Client_Address_line_1]'  => 'http://www.codexworld.com',
    '[Invoice_Number]' => 'CodexWorld',
    '[Date]' => $invoiceDate
);

foreach ($token as $key => $value){
    $output = str_replace($key, $value, $template[0]);
}

$i = 0; 
foreach ($invoiceItems as $invoiceItem) {
    $i++;

    $output = str_replace("[course_no_{$i}]", $invoiceItem["item_code"], $output);
    $output = str_replace("[product_{$i}]", $invoiceItem["item_name"], $output);
    $output = str_replace("[delegates_no_{$i}]", $invoiceItem["order_item_quantity"], $output);
    $output = str_replace("[price_{$i}]", $invoiceItem["order_item_price"], $output);
    $output = str_replace("[total_{$i}]", $invoiceItem["order_item_final_amount"], $output);
}

template html string

<div id="items-list">
    <table id="table-invoice" class="table table-bordered table-condensed  items-table" width="100%">
        <thead>
            <tr id="table_invoice_header">
                <th id="table_invoice_header1">Course No</th>
                <th id="table_invoice_header2">Course Name</th>
                <th id="table_invoice_header3">No of Delegates</th>
                <th id="table_invoice_header4" width="100">Price</th>
                <th id="table_invoice_header5" width="100">Total</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td class="total-rown">[course_no_0] </td>
                <td class="total-rown">[product_0] </td>
                <td class="total-rown">[delegates_no_0] </td>
                <td class="total-rown">[price_0] [curr]</td>
                <td class="total-rown">[total_0] [curr]</td>
            </tr>
            <tr>
                <td class="total-rown">[course_no_1] </td>
                <td class="total-rown">[product_1] </td>
                <td class="total-rown">[delegates_no_1] </td>
                <td class="total-rown">[price_1] [curr]</td>
                <td class="total-rown">[total_1] [curr]</td>
            </tr>
            <tr>
                <td class="total-rown">[course_no_2] </td>
                <td class="total-rown">[product_2] </td>
                <td class="total-rown">[delegates_no_2] </td>
                <td class="total-rown">[price_2] [curr]</td>
                <td class="total-rown">[total_2] [curr]</td>
            </tr>
            <tr>
                <td class="total-rown">[course_no_3] </td>
                <td class="total-rown">[product_3] </td>
                <td class="total-rown">[delegates_no_3] </td>
                <td class="total-rown">[price_3] [curr]</td>
                <td class="total-rown">[total_3] [curr]</td>
            </tr>
            <tr>
                <td class="total-rown">[course_no_4] </td>
                <td class="total-rown">[product_4] </td>
                <td class="total-rown">[delegates_no_4] </td>
                <td class="total-rown">[price_4] [curr]</td>
                <td class="total-rown">[total_4] [curr]</td>
            </tr>
        </tbody>
        <tfoot>
            <tr class="totals-row">
                <td colspan="3" class="wide-cell"></td>
                <td id="tableheader"><strong>Sub Total</strong></td>
                <td class="total-rown sub-total" coslpan="2">[sub_total] [curr]</td>    
            </tr>
            <tr class="totals-row">
                <td colspan="3" class="wide-cell"></td>
                <td class="total-rown" id="tableheader">Tax Rate</td>
                <td class="total-rown tax-rate" coslpan="2">[tax_rate]&nbsp;%</td>
            </tr>
            <tr class="totals-row">
                <td colspan="3" class="wide-cell"></td>
                <td class="total-rown">Tax Amount</td>
                <td class="total-rown tax-amount" coslpan="2">[tax_amount] [curr]</td>
            </tr>
            <tr class="totals-row">
                <td colspan="3" class="wide-cell"></td>
                <td id="tableheader1"><strong>Total</strong></td>
                <td class="total-rown invoice-total" coslpan="2">[total] [curr]</td>
            </tr>
        </tfoot>
    </table>
</div>

Source