将内容替换为 PHP 变量(存储 HTML 标签)

3

我希望能够用PHP变量($html_content)替换<a>标签的内容...

$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>

我希望替换字符串中包含标签的每个元素中最后一个元素的内容。

示例行结果:

<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
...
...
...

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

使用这个表格,我已经展示了筛选结果在一个页面上,而不是使用标签的操作描述。 (这个结果是那个名为reports.php的页面的一部分)。 我想要将这些记录仅导出带有操作字段说明的PDF文件(我正在使用HTML到PDF类)。 在那个页面上,我已经将这些HTML值发送到那个页面并存储在PHP变量($html_content)中,在export_pdf.php页面上... 表格记录的大小不是固定的...它基于从排序中生成的结果。 请有人帮帮我... 提前谢谢...
2个回答

1

Try following codes:

$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>

谢谢你的回复,Bora... 但是我需要将每一行替换为不同的内容值。这些内容来自表格。我只想替换特定客户的操作。 - kpmDev
你能给我一个例子或者把代码粘贴到问题中吗?我会进行更新。 - Bora
Bora: 我编辑了问题...请看一下...你能理解吗? - kpmDev
好的,你替换的文本是 will beyesterday 等等。这些文本会根据什么来更改呢?那么这些文本在哪里存储?是在数组里面吗?我需要知道。 - Bora
@Vasu 已更新为 foreach。在从查询中获取结果时,您可以将 while 替换为 foreach - Bora

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 替代。

谢谢你的回复,Alma Do Mundo。但是我需要将每一行替换为不同的内容值。这些内容来自表格。我只想替换特定客户的操作。我已经编辑了问题,请查看... - kpmDev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接