我想從一個來自html語句的字符串中刪除空格或新行。 例子:讓我們後續的字符串正則表達式 - 如何刪除HTML代碼中的空白和新行?
<ul class="list-group sidebar-nav-v1 margin-bottom-40" id="menuHomeUserPrivate">
<li class="list-group-item active">
<a id="to_ProfileOverall" class="privateMenuLinkJS"><i class="fa fa-bar-chart-o"></i> Overall</a>
</li>
<li class="list-group-item list-toggle">
<a data-toggle="collapse" data-parent="#menuHomeUserPrivate" href="#collapse-MoneyManage" ><i class="fa fa-money"></i> Invoice</a>
<ul id="collapse-MoneyManage" class="collapse">
<li><a id="to_MoneyManagerFaturamentoInsert" class="privateMenuLinkJS"><i class="fa fa-level-down"></i> Big Invoice </a></li>
<li><a id="to_MoneyManagerFaturamentoGerir" class="privateMenuLinkJS"><i class="fa fa-cogs"></i> Big big big
Invoice 2 </a></li>
</ul>
</li>
</ul>
這是期望的結果:
<ul class="list-group sidebar-nav-v1 margin-bottom-40" id="menuHomeUserPrivate"><li class="list-group-item active"><a id="to_ProfileOverall" class="privateMenuLinkJS"><i class="fa fa-bar-chart-o"></i>Overall</a></li><li class="list-group-item list-toggle"><a data-toggle="collapse" data-parent="#menuHomeUserPrivate" href="#collapse-MoneyManage" ><i class="fa fa-money"></i> Invoice</a><ul id="collapse-MoneyManage" class="collapse"><li><a id="to_MoneyManagerFaturamentoInsert" class="privateMenuLinkJS"><i class="fa fa-level-down"></i>Big Invoice</a></li><li><a id="to_MoneyManagerFaturamentoGerir" class="privateMenuLinkJS"><i class="fa fa-cogs"></i>Big big big Invoice 2</a></li></ul></li></ul>
正如你可以看到:
- 只有1號線,沒有枝條空格或之間的新線路「> <」,如果它們之間沒有字符串。
- 我想修剪「> <」之間的字符串,如果有的話。例如:
</i> Big Invoice </a>
變成了</i>Big Invoice</a>
。 最後
</i> Big big big
Invoice 2 </a></li>
成爲</i>Big big big Invoice 2</a></li>
,在句子和修剪的中間沒有新的生產線。
到目前爲止,我實現了第一步。這是regex我用(>\s+<)
但我不知道如何實現第2步和第3步。可能嗎?任何想法?
更新: 亞當的帖子後,這最終代碼:
//把你的HTML代碼在這裏。不要用雙引號「裏面,而是使用單。
$str =<<<eof
your dynamic HTML here.
eof;
$re = "/(?:\\s*([<>])\\s*|(\\s)\\s*)/im";
$subst = "$1$2";
$result = preg_replace($re, $subst, $str);
//If you want to use JSON
$arrToJSON = array(
"dataPHPtoJs"=>"yourData",
"htmlDyn"=>"$result"
);
$resultJSON= json_encode(array($arrToJSON));
此HTML字符串是乾淨的。所以,你可以用它低谷AJAX,JSON,裏面的javascript,這將作品。
我我。我使用的是JavaScript代碼,沒有AJAX,JSON沒有內側箱
var htmlDyn="<?php echo $result; ?>";
//Do what you want to do with.
$('.someElementClass').append(htmlDyn);
什麼局域網你使用的是什麼標準? – Shafizadeh
[你不能用正則表達式解析任意的HTML](http://stackoverflow.com/a/1732454/222364)。您的代碼可能*錯誤地*將<">'摺疊爲'<">'。你需要爲你正在使用的任何語言找到一個合適的HTML解析器。有可能已經做了你想要的東西,稱爲* HTML Minifier *。 (而且我的示例似乎也在渲染空間......第一個空間應該有5個空格) –