我正在输出一个由WYSIWYG编辑器创建的巨大字符串。以下是编辑器输出的示例。我试图阻止 
的所有空间从开头和结尾(在每个标签内),以便标签紧紧包裹内容。 Rtrim和Ltrim不起作用,因为它们修剪整个字符串,而不是内部的标签。
以下是字符串示例。
<div> Small amount of text, should be alot.</div>
<div>Small amount of text, should be alot. </div>
这将输出以下行的内容(div已被留下以显示空格的范围,但将在输出中隐藏。)
<div> Small amount of text, should be alot.</div>
<div>Small amount of text, should be alot. </div>
我更喜欢这个输出..
<div>Small amount of text, should be alot.</div>
<div>Small amount of text, should be alot.</div>
如何实现这一目标?
答案 0 :(得分:1)
将空格和/或
的重复替换为单个 
:
preg_replace('/(?: | ){2,}/', ' ', $string);
如果要将所有
转换为空格,然后折叠空格:
preg_replace('/ {2,}/', ' ', str_replace(' ', ' ', $string));
请注意,这不会从开始标记之后或结束标记之前删除单个空格。对于类似的东西,你正在使用正则表达式进入一个非常讨厌的领域,你将需要使用DOM或XML来解析文档。
但是,HTML中的前导和尾随空格通常是无关紧要的,所以这应该可以让你到达目的地。
答案 1 :(得分:0)
为什么不尝试更换字符串?
$newStr = str_replace(" ", "", $oldStr);
答案 2 :(得分:0)
我认为你的最终目标是:
替换为“”你可以通过以下方式实现这一目标:
//1 replace hard spaces with spaces
$text = str_replace(' ', ' ', $text);
//2 squeeze spaces
$text = preg_replace('/\s+/', ' ', $text);
//replace "> " & " <" with ">" & "<" respectively
$result = str_replace(array('> ', ' <'), array('>', '<'), $text);