我想要使用PHP刪除表內的所有<br />
。我知道我可以使用str_replace()
刪除<br />
。但它會刪除所有<br />
。我只想刪除<table>
和</table>
之間的<br />
。我有一個字符串中的幾個表。使用PHP刪除<br />表內使用PHP
html代碼如下。你也可以看到this fiddle。
<p>Some text before table:</p><table cellpadding="0" cellspacing="0"><br /> <tbody><br /> <tr><br /> <td><br /> <p><strong>column1</strong></p> </td><br /> <td><br /> <p><strong>column2</strong></p> </td></tr><br /> <tr><br /> <td><br /> <p>1</p> </td><br /> <td><br /> <p>2</p> </td><br /> <br /> </tr><br /> </tbody><br /></table>
<p>Some text before table:</p><table cellpadding="0" cellspacing="0"><br /> <tbody><br /> <tr><br /> <td><br /> <p><strong>column1</strong></p> </td><br /> <td><br /> <p><strong>column2</strong></p> </td></tr><br /> <tr><br /> <td><br /> <p>1</p> </td><br /> <td><br /> <p>2</p> </td><br /> <br /> </tr><br /> </tbody><br /></table>
我試過以下方法來做到這一點,這是最好的解決方案嗎?
<?php
$input = '<p>Some text before table:</p><table cellpadding="0" cellspacing="0"><br /> <tbody><br /> <tr><br /> <td><br /> <p><strong>column1</strong></p> </td><br /> <td><br /> <p><strong>column2</strong></p> </td></tr><br /> <tr><br /> <td><br /> <p>1</p> </td><br /> <td><br /> <p>2</p> </td><br /> <br /> </tr><br /> </tbody><br /></table>
<p>Some text before table:</p><table cellpadding="0" cellspacing="0"><br /> <tbody><br /> <tr><br /> <td><br /> <p><strong>column1</strong></p> </td><br /> <td><br /> <p><strong>column2</strong></p> </td></tr><br /> <tr><br /> <td><br /> <p>1</p> </td><br /> <td><br /> <p>2</p> </td><br /> <br /> </tr><br /> </tbody><br /></table>';
$body = preg_replace_callback("~<table\b.*?/table>~si", "process_table", $input);
function process_table($match) {
return str_replace('<br />', '', $match[0]);
}
echo $body;
使用正則表達式使用了preg_replace() – Oyeme
用簡單的正則表達式的問題就可以了,你什麼時候桌子裏有桌子。你有餐桌嗎? –
什麼產生你的無效HTML? – j08691