0

我有这种代码:

<br>
Réaménagement des éclairages : Couloir de circulation de l'accueil – Salle de restauration de l'EHPA Résidence «
        Loubayssens »

</td>

我尝试获得:

<p>Réaménagement des éclairages : Couloir de circulation de l'accueil – Salle de restauration de l'EHPA Résidence «
        Loubayssens »
</p>

我想删除<br>标签并将文本行封装在<p>标签中,但是当它位于多行时,我无法捕获整行文本。

我尝试:

<pre>
$pattern = '/<br>(\s*)([\w]([.*]|[\n])[\S|\w])(\s*)<\/td>/i';
$replacement = "\<p>$2</p></td>";
$source = preg_replace($pattern, $replacement, $source);
</pre>

我也尝试 /is 但不起作用。

你能给我一些提示吗?

4

3 回答 3

0

使用这个正则表达式<br>([\w\W\n]+)</td>,这将得到标签 br 和 td 中的所有内容,包括 \n。单击此链接以获取详细示例。

这个链接替换为<p>.

于 2013-08-02T08:39:46.110 回答
0

使用 DOMDocument 删除br标签中的td标签并用标签封装文本p以及从其开头和结尾删除空格的非常简单的示例:

<?php
$str = <<<HTML
<table>
<tr>
<td>
<br>
    Réaménagement des éclairages : Couloir de circulation de l'accueil – Salle de restauration de l'EHPA Résidence «
            Loubayssens »

</td>
<tr>
</table>
HTML;

$dom = new DOMDocument();
$dom->loadHTML($str);
$td = $dom->getElementsByTagName('td')->item(0);
foreach($td->childNodes as $child)
{
    if ($child->nodeName == 'br')
        $td->removeChild($child);
}
$element = $dom->createElement('p', trim($td->nodeValue));
$td->parentNode->replaceChild($element, $td);
echo $dom->saveHTML();

现场演示。

于 2013-08-02T09:16:37.153 回答
0

试试这个正则表达式模式:

$pattern = '/<br>([^<]*)<\/td>/i';
$replacement = "<p>$1</p></td>";
$source = preg_replace($pattern, $replacement, $source);

简单而肮脏的解决方案,比浪费时间使用解析器完成简单任务要好...

于 2013-08-02T09:24:56.170 回答