【发布时间】:2016-08-17 13:44:19
【问题描述】:
我想在锚标记后放置一个空格,以便下一个单词与它分开。问题是有锚标记,之后有   字符,或者可能有另一个 html 标记打开。所以在这些情况下,我们不想输入space,因为它会打破我们的记录。
如果没有空格并且有一个单词,我只想在锚后放置空格。
现在我想出了正则表达式,我不确定它是否正是我想要的
preg_replace("/\<\/a\>([^\s< ])/", '</a> $1', $text, -1, $count);
print "Number of occurence in type $type = $count \n";
$this->count += $count;
在实际保存替换的字符串之前,我尝试查看出现次数。但它显示出更高的数量,我非常怀疑这是不可能的。
请帮我修复这个正则表达式。
场景:
<a href="blah.com">Hello</a>World // Here we need to put space between Hello and World
<a href="blah.com">Hello</a> World // Do not touch this
<a href="blah.com">Hello</a><b>World</b> // do not touch this
可能有很多情况需要忽略,但具体来说,我们需要执行第一个场景
【问题讨论】:
-
那里有错误,但他们没有解释更高的计数。您能否提供一个大小有限但足以说明问题的示例文本 (html)?
-
实际上我现在没有实际的文本,因为它完全基于我们的假设。让我们这样说吧。如果有任何人类语言单词可能是英语,泰国,并且锚点关闭和那个单词之间没有空格。我们必须在那里放置一个空格,以便它成为实际的单词。除此之外,请忽略它们
-
只要意识到下一个单词可以包裹在
span这样的标签中,并且仍然坚持前一个单词,因此排除<并不总是有效。其次,在正则表达式类中,您不能测试字符串,只能测试单个字符。所以对&nbsp;的测试也将排除n、b、...等。 -
@trincot 请查看更新部分。我了解
span部分,但现在我们可以跳过这部分,因为我们知道这样的情况很少。 -
<\/\w+>(\w+)有什么问题?
标签: php regex preg-replace html-parsing