Я хотел бы удалить withe пробелы или новые строки из строки, которая исходит из предложения html. Пример: позволяет взять следующий снабжать струной, тетивой и т.п.Regex - Как удалить пробелы и новые строки в 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 линия, ни Withe пробелы или новые строки между "> <", если между ними нет строки.
- Я хотел бы иметь обрезанные строки между «> <», если есть некоторые. Пример:
</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. Возможно ли это? Есть идеи?
Update: После поста Адама, это окончательный код:
// Поместите свой 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, который будет работа.
I моих . случай я использую внутри яваскрипта кода, не AJAX, не JSON
var htmlDyn="<?php echo $result; ?>";
//Do what you want to do with.
$('.someElementClass').append(htmlDyn);
Что LAN вы используете? – Shafizadeh
[Вы не можете разобрать произвольный HTML с Regex] (http://stackoverflow.com/a/1732454/222364). Ваш код вероятно * неправильно * сбрасывает ' 'to' '. Вам нужно найти подходящий HTML-парсер для любого языка, с которым вы работаете. Вероятно, уже есть что-то, что делает то, что вы хотите, называемое * HTML Minifier *. (И кажется, что мои примеры также сворачивают пробелы ... В первом случае должно быть 5 пробелов) –