我有这种代码:
<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>
我也尝试/但是不起作用。
你能给我一些提示吗?
答案 0 :(得分:0)
答案 1 :(得分: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();
<强> Live DEMO. 强>
答案 2 :(得分:0)
试试这个正则表达式模式:
$pattern = '/<br>([^<]*)<\/td>/i';
$replacement = "<p>$1</p></td>";
$source = preg_replace($pattern, $replacement, $source);
简单而肮脏的解决方案,比使用解析器浪费你的时间来完成一项简单的任务更好......