2017-03-03 39 views
-1

我做了一个preg_replace删除TAG'TagToremove'后,我仍然有一个线路回报,你知道我是否可以在preg_replace 或之后删除它,以及如何? 感谢PHP删除特定行返回

<?php 

$strip_list = array('TagToremove'); 
foreach ($strip_list as $tag) 
{ 
    $temp = preg_replace('/<\/?' . $tag . '(.|\s)*?>/', '', $temp); 
} 


?> 

字符串的preg_replace前:经过了preg_replace

<CodeServiceTransport></CodeServiceTransport> 
<PrixTotalCommande>100</PrixTotalCommande> 
<TagToremove> 
<Ligne> 
<ll>hh</ll> 
<Id>48</Id> 
<SKU>autreID</SKU> 
<Quantity>1</Quantity> 
</Ligne> 
</TagToremove> 
<Meta-CodeActivite></Meta-CodeActivite> 
<Meta-CodeEnseigne></Meta-CodeEnseigne> 

字符串:

<CodeServiceTransport></CodeServiceTransport> 
<PrixTotalCommande>100</PrixTotalCommande> 

<Ligne> 
<ll>hh</ll> 
<Id>48</Id> 
<SKU>autreID</SKU> 
<Quantity>1</Quantity> 
</Ligne> 

<Meta-CodeActivite></Meta-CodeActivite> 
<Meta-CodeEnseigne></Meta-CodeEnseigne> 

回答

1

不要用正则表达式解析HTML,使用DOM解析器来代替。

不过,对于您的特定问题,你必须在你的正则表达式添加一个可选的换行符这样的:

$temp = preg_replace('~</?' . $tag . '[^>]*>\R?~i', '', $temp); 

\R代表任何种类的换行符的(即\r\n\r\n

+0

谢谢,但行回归仍然在这里... – Pipoo

+0

哎呀抱歉它的工作!它只是改变我的缩进添加左侧的空间。 – Pipoo

+0

@Pipoo:没问题,但对我而言,前面没有空格。 – Toto