2013-01-02 196 views
4

我有这个正则表达式,我希望它删除$$之间的所有文本,并将其替换为空字符串,除非在两个$标志之间存在任何空格,并且在该案件无视替换。使用我现在使用的正则表达式,无论有没有空间,都会将其删除。删除字符串,除非有空格

<?php 
$tmp = "<p> 
    $random_text$ 
</p> 
<p> 
    $random text2$ 
</p> 
<p> 
    This is some text 
</p> 
<p> 
    This is some text 
</p>"; 

$tmp = preg_replace("/\\$[^ ].+?\\$/", "", $tmp); 

所以,最后我希望将此作为输出。您可能会注意到,第一段落标签之间的文字已经消失,但第二段标签仍然存在。

<p> 

</p> 
<p> 
    $random text2$ 
</p> 
<p> 
    This is some text 
</p> 
<p> 
    This is some text 
</p> 

回答

1
/\\$[^ ]+?\\$/ 

我刚刚删除的点

+0

这将只是删除一个非空字符。 –

+0

删除点作品 –

+0

@RyanNaddy只有一个空间可以吗? –

0
<?php $source = 'His $name$ is $Luis$'; 
echo $result = preg_replace('/\$(.*?)\$/', '<b>$1</b>', $source); 
?>