我正在尝试使用
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()
分解成碎片的原因是因为我不想更改标签之间字符串中可能存在的任何内容。
您可能想查看此线程,看看是否要切换到使用 DOMDocument。它会帮你省去很多试图解析 HTML 的麻烦。
测试:
<?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"
看起来效果很好。
亚历克斯,我弄清楚了我在哪里获得了额外的空间。
我将该代码放入这样的文本区域中:
$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>
没有行空格或中断,多余的空格消失了。
为什么不使用
trim()
?
$text = trim($text);
这会删除字符串周围的空格。