我正在尝试使用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分成碎片的原因是因为我不想更改标记之间的字符串中的任何内容。有任何想法吗?
答案 0 :(得分:1)
That does not happen for me(它不应该)。
它可能是其他地方的空间输出(使用var_dump()
来查看字符串)。
答案 1 :(得分:0)
您可能希望查看此线程以查看是否要切换到使用DOMDocument。它会为你节省很多令人头疼的问题,试图解析HTML。
答案 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);
这会删除字符串周围的空白区域。