3

我想替换<a>PHP 变量 ( ) 中的标签内容$html_content...

变量$html_content值如下所示:

$html_content= "<table>
<thead>
<tr><th>Customer</th><th>Age</th><th>A</th></tr>
</thead>
<tbody>
<tr><td>Test 1</td><td>25</td><td><a href='www.google.com'>Link</a></td></tr>
<tr><td>Test 2</td><td>30</td><td><a href='www.yahoo.com'>Link</a></td></tr>
<tr><td>Test 3</td><td>31</td><td><a href='www.rediff.com'>Link</a></td></tr>
...
...
...
</tbody>
</table>

我想替换字符串中每个包含标签的每个最后<td>内容的内容。<tr><a>

样本行结果:

<tr><td>Test 1</td><td>25</td><td>Action will be taken soon.</td></tr>
<tr><td>Test 2</td><td>30</td><td>Action taken yesterday</td></tr>
...
...

我需要结果来用不同的内容值替换每一行。内容取自表格。只有我想替换的特定客户操作。

CUSTOMER TABLE:
------------------------------------------------------
id    customer    age    action 
------------------------------------------------------
1     Test 1      25     Action will be taken soon
2     Test 2      30     Action taken yesterday
3     Test 3      31     Action will take tomw
4     Kumar       28     Suspended
...
...
...

------------------------------------------------------

使用此表,我在没有操作描述而不是<a>标签的页面中显示了过滤结果。(此结果是名为 的页面的一部分reports.php)。我只想将这些记录与action字段描述一起导出到 PDF(我正在使用 HTML 到 PDF 类)。在该页面中,我已将这些 HTML 值发送到该页面并存储在页面中的 PHP 变量($html_content)中export_pdf.php...

记录不是固定大小的......它是基于排序生成的结果。

请任何人帮助我...提前谢谢...

4

2 回答 2

1

您可以通过正则表达式来做到这一点:

$rgReplace = ['foo', 'bar', 'baz'];
$i         = 0;
$html_content=preg_replace_callback('/\<td[^\<\>]*\>\<a[^\<\>]*\>[^\<\>]*\<\/a\>\<\/td\>/', 
function($rgMatches) use ($rgReplace, &$i)
{
   return $rgReplace[$i++];
}, $html_content);

(你$rgReplace是一个需要替换的数组)。

或者,或者,通过DOMDocument API。

于 2013-08-29T07:27:45.957 回答
1

尝试以下代码:

$html_content= preg_replace("/<a[^>]+\>(.*?)<\/a>/i", "Action will be taken soon.", $html_content); 

foreachquery

foreach($row = mysql_fetch_assoc($result))
{
    $html_content = preg_replace("/<a[^>]+\>(\w+)<\/a>/i", $row['action'], $html_content); 
}

输出

<table>
   <thead>
      <tr><th>Customer</th><th>Age</th><th>A</th></tr>
   </thead>
   <tbody>
      <tr><td>Test 1</td><td>25</td><td>Action will be taken soon.</td></tr>
      <tr><td>Test 2</td><td>30</td><td>Action will be taken soon.</td></tr>
      <tr><td>Test 3</td><td>31</td><td>Action will be taken soon.</td></tr>
   </tbody>
</table>
于 2013-08-29T07:24:41.553 回答