preg_replace问题

时间:2011-07-20 03:48:12

标签: php preg-replace

我正在尝试使用preg_replace来删除一段代码,但是我无法正常工作。

代码示例:

$str = '<p class="code">some string here</p>';

PHP我正在使用:

$pattern = array();
$pattern[0] = '!<p class="code">!';
$pattern[1] = '!</p>!';
preg_replace($pattern,"", $str);

除了p和class之间的空格之外,这就像我想要的那样去除代码。

返回:

  some string here //notice the single space at the beginning.

我想要:

some string here //no space at the beginning.

我一直在试图找到一个解决方案。我试图在一个块中删除它而不是将preg_replace分成碎片的原因是因为我不想更改标记之间的字符串中的任何内容。有任何想法吗?

5 个答案:

答案 0 :(得分:1)

That does not happen for me(它不应该)。

它可能是其他地方的空间输出(使用var_dump()来查看字符串)。

答案 1 :(得分:0)

您可能希望查看此线程以查看是否要切换到使用DOMDocument。它会为你节省很多令人头疼的问题,试图解析HTML。

Robust and Mature HTML Parser for PHP

答案 2 :(得分:0)

试验:

<?php
$str = '<p class="code">some string here</p>';

$pattern = array();
$pattern[0] = '!<p class="code">!';
$pattern[1] = '!</p>!';
$result = preg_replace($pattern,"", $str);
var_dump($result);

结果:

php pregrep.php                                                                  
string(16) "some string here"

似乎工作正常。

答案 3 :(得分:0)

亚历克斯我弄明白我在哪里占用了额外的空间。

我把这些代码放到这样的文本区域中:

$str = '<p class="code">some string here</p>';
$pattern = array();
$pattern[0] = '!<p class="code">!';
$pattern[1] = '!</p>!';
$strip_str = preg_replace($pattern,"", $str);


<textarea id="code_area" class="syntaxhl" name="code" cols="66" rows="5">
 <?php echo $strip_str; ?>
</textarea>

这给了我额外的空间,但当我将代码更改为:

<textarea id="code_area" class="syntaxhl" name="code" cols="66" rows="5"><?php echo $strip_str; ?></textarea>

没有行间隔或打破额外空间消失。

答案 4 :(得分:0)

为什么不使用trim()

$text = trim($text);

这会删除字符串周围的空白区域。