有没有人有一个分裂html字符串(来自一个小的mce编辑器)并使用C#将它分成N个部分的例子?
我需要均匀地分割字符串而不分割单词.
我想只是拆分html并使用HtmlAgilityPack尝试修复损坏的标签.虽然我不确定如何找到分裂点,但理想情况下它应该基于文本而不是html.
谁有任何想法如何去做?
UPDATE
根据要求,这是输入和所需输出的示例.
INPUT:
<p><strong>Lorem ipsum dolor sit amet, <em>consectetur adipiscing</em></strong> elit.</p>
Run Code Online (Sandbox Code Playgroud)
输出(当分成3个小组时):
Part1: <p><strong>Lorem ipsum dolor</strong></p>
Part2: <p><strong>sit amet, <em>consectetur</em></strong></p>
Part3: <p><strong><em>adipiscing</em></strong> elit.</p>
Run Code Online (Sandbox Code Playgroud)
更新2:
我刚刚玩过Tidy HTML,这似乎很适合修复损坏的标签,所以如果我能找到一种方法来找到拆分品牌,这可能是个不错的选择?
更新3
在.NET C#中对整个单词使用类似于此Truncate字符串的方法,我现在设法获得将构成每个部分的纯文本单词列表.所以,比如说使用Tidy HTML我有一个有效的HTML结构用于html,并且给出了这个单词列表,任何人都知道现在最好的分割方法是什么?
更新4
任何人都可以看到使用正则表达式以下列方式使用HTML查找索引的问题:
给定纯文本字符串"sit amet,consectetur",用正则表达式替换所有空格"(\ s | <(.| \n)+?>)*",理论上找到具有空格和/或任意组合的字符串标签
那么我可以使用Tidy HTML来修复损坏的html标签吗?
非常感谢
马特
我正在使用PHP和libtidy来尝试筛选可能是历史上最糟糕和最不正确的HTML表格使用情况.该站点关闭了几个table,tr,td,font或bold标签,并且一致地嵌套了表中的许多不同的表层.
示例代码段:
<center>
<table border="1" bordercolor="#000000" cellspacing="0" cellpadding="0">
<tr>
<td width="50%">
<center>
Home Team - <b>Wildcats<td>
<center>
Away Team - <b>Polar Bears<tr>
<td colspan="2">
<center>
<b><font size="+1">Rosters<tr>
<td valign="top">
<center>
<table border="0" cellspacing="0">
<tr>
<td>
<font size="2">1 <td>
<font size="2">Baird, T<tr>
<td>
<font size="2">2 <td>
<font size="2">Knight, P<tr>
<td>
<font size="2">8 <td>
<font size="2">Miller, B<tr>
<td>
<font size="2">9 <td>
<font size="2">Huebsch, B<tr>
<td>
<font size="2">11 <td>
<font size="2">Buschmann, C<tr>
<td>
<font size="2">12 <td>
<font size="2">Reding, J<tr>
<td>
<font size="2">14 <td>
<font size="2">Simpson, S<tr>
<td>
<font size="2">27 <td>
<font …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用JTidy(jtidy-r938.jar)来清理输入HTML字符串,但我似乎无法正确获取默认设置.通常,诸如"你好世界"之类的字符串在整理后最终成为"helloworld".我想展示我在这里做的事情,任何指针都会非常感激:
假设这rawHtml
是包含输入(真实世界)HTML的String.这就是我正在做的事情:
Tidy tidy = new Tidy();
tidy.setPrintBodyOnly(true);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
tidy.parse(new StringReader(rawHtml), ps);
return baos.toString("UTF8");
Run Code Online (Sandbox Code Playgroud)
首先,上述代码看起来有什么根本错误吗?我似乎得到了奇怪的结果.
例如,请考虑以下输入:
<p class="MsoNormal" style="text-autospace:none;"><font color="black"><span style="color:black;">???</span></font><b><font color="#7f0055"><span style="color:#7f0055;font-weight:bold;">private</span></font></b><font color="black"><span style="color:black;"> String parseDescription</span></font><font>
输出是:
<p class="MsoNormal" style="text-autospace:none;"><font color=
"black"><span style="color:black;"> </span></font>
<b><font color="#7F0055"><span style=
"color:#7f0055;font-weight:bold;">private</span></font></b><font
color="black"><span style="color:black;">String
parseDescription</span></font></p>
所以,
"public String parseDescription"变为"publicString parseDescription"
提前致谢!
我正在使用 HTML Tidy Online ( http://infohound.net/tidy/ ) 来整理一些非常旧且混乱的 HTML 文件,其中包含一些希伯来字符。每当 Tidy 处理页面时,即使在更改设置中的编码方法之后,输出也会将希伯来字符变成乱码。使用不同的设置,我确实设法获得与 Unicode 实体相同的希伯来字符输出。我用谷歌搜索了可能的解决方案,但没有找到。我心里有几个想法,但我不确定如何实现它们(如果有的话)(也许有人有更好的解决方案)。
- 我想也许我可以(在处理页面之后)扫描页面中的 unicode 实体,并将它们替换为相应的希伯来字符(当然,以系统的方式)。
- 也许我可以获取 HTML Tidy 源代码并修改它以适当地输出希伯来语字符。问题是我怀疑我是否有足够的知识来开始做这样的事情。
当我在Coda中使用Tidy HTML时它很干净,但我不喜欢空行
<ul>
<li>…</li>
<!-- here -->
<li>…</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我尝试编辑配置但没有成功
// config file for Coda PHP Toolkit Tidy FORMAT script
// http://www.chipwreck.de/blog/software/coda-php
//
// documentation is here: http://tidy.sourceforge.net/#docs
// rev 5
anchor-as-name: no
doctype: auto
drop-empty-paras: no
fix-uri: no
literal-attributes: yes
merge-divs: no
merge-spans: no
numeric-entities: no
preserve-entities: yes
quote-ampersand: no
quote-marks: no
show-body-only: no
indent: auto
indent-spaces: 4
tab-size: 4
wrap: 0
wrap-asp: no
wrap-jste: no
wrap-php: no
wrap-sections: no
tidy-mark: no
new-blocklevel-tags: article,aside,command,canvas,dialog,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,meter
new-inline-tags: …
Run Code Online (Sandbox Code Playgroud) File.html
word<i><span> <span>ratti</span></span></i>
Run Code Online (Sandbox Code Playgroud)
命令
$ tidy File.html
Run Code Online (Sandbox Code Playgroud)
产量
word<i>ratti</i>
Run Code Online (Sandbox Code Playgroud)
期望的输出
word<i> ratti</i>
Run Code Online (Sandbox Code Playgroud)
空间在哪里?
日志
Run Code Online (Sandbox Code Playgroud)line 1 column 1 - Warning: missing <!DOCTYPE> declaration line 1 column 1 - Warning: plain text isn't allowed in <head> elements line 1 column 8 - Warning: <span> is probably intended as </span> line 1 column 5 - Warning: replacing unexpected span by </span> line 1 column 33 - Warning: discarding unexpected </span> line 1 column 40 - Warning: discarding unexpected </i> line 1 column …
我在这里安装了 W3C tidy-html5 包:~/Library/Application Support/Avian/Pristine Copy/Bundles/tidy-html5
但是,当我在终端中运行该命令时,它似乎无法识别 HTML5 标签。看起来它可能正在运行旧的 HTML Tidy 方法,它只能理解 XHTML/HTML4。
例如,如果我运行:
tidy ~/Desktop/tidy-test.html
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
line 1 column 180 - Error: <aside> is not recognized!
line 1 column 180 - Warning: discarding unexpected <aside>
line 1 column 353 - Error: <section> is not recognized!
line 1 column 353 - Warning: discarding unexpected <section>
line 1 column 418 - Warning: replacing invalid character code 139
line 1 column 419 - Warning: replacing invalid character code 134
line 1 column …
Run Code Online (Sandbox Code Playgroud) 是否有GWT(Google Web Toolkit)的功能可以打印小部件的html输出?(如果问题严重错误,我道歉 - 我不是GWT开发者,但我们的开发人员声称没有办法做到这一点)
目前所有输出都是一个巨大的单行块,因此调试CSS问题等是一项相当大的任务.
HTML Tidy/Pretty Print,至少在测试期间,将是一个很好的帮助.
我正在使用html agility pack来解析html 表格信息.现在有一些html内容缺少结束标记,并且由于缺少结束标记而来自此页面html agility pack不能正确解析信息.所以我想在缺少结束标记的地方插入结束标记,以便html敏捷包正确解析信息.所以要插入缺少的结束标记我该怎么办?我应该为此编写自己的代码还是使用html tidy pack来做到这一点?
如果html整洁包然后哪个是最好的html整洁包,如果可能的话如何使用它的任何示例?如果我自己的代码比它可能是什么样的?
在html agility pack中是否有任何选项可以让我们首先使html页面整洁,然后解析网页.
我正在使用php的整洁库来"清理和修复"来自用户输入的一些html.
一切正常,但我遇到了一个问题,我无法弄清楚它的原因是什么.我的代码是这样的:
$tidy = new tidy();
$tidy_options = array(
'hide-comments' => true,'tidy-mark' => false, 'indent' => false,
'new-blocklevel-tags' => 'article,footer,header,hgroup,output,progress,section,video',
'new-inline-tags' => 'audio,details,time,ruby,rt,rp',
'drop-empty-paras' => false,
'doctype' => '<!DOCTYPE HTML>',
'sort-attributes' => 'none', 'vertical-space' => false,
'output-xhtml' => true,'wrap' => 180,
'wrap-attributes' => false,
'break-before-br' => false,
'show-body-only' => true
);
$data = $tidy->repairString($data, $tidy_options, 'UTF8');
echo $data;
Run Code Online (Sandbox Code Playgroud)
这适用于所有类型的输入,除非我正在尝试使用html来嵌入swf文件.
所以,我尝试这个代码:
<object data="http://the_swf_file_url" type="application/x-shockwave-flash" width="853" height="520">
<param name="movie" value="http://the_swf_file_url">
</object>
Run Code Online (Sandbox Code Playgroud)
但是RepairString对它进行了条纹处理,并返回一个空字符串.
最奇怪的是: -
如果我输入一些文字以及上面的内容,那么输入就像Hello world<object...>...</object>
它可以正常工作一样.
- 如果我指定 …