我有一个比较单词的diff算法。当单词触摸标签时会出现问题:
<strong>Word
在这种情况下,它认为<
只是一个单词,因为标签和单词之间没有空格。 (富文本编辑器不保证单词和标签之间的空格)
在每个标记开始>
和结束<p>
我的代码与<p>
代码完全相同,但我不知道如何修改正则表达式以修复所有代码。
$text = preg_replace_callback("!<p>([\S])!", function ($p) {
return "<p> " . $p[1];
}, $text);
$text = preg_replace_callback("!([\S])</p>!", function ($p) {
return $p[1] . " </p>";
}, $text);
代码的代码:
[
{'id': 0, 'name': 'Housing', 'value': 3},
{'id': 1, 'name': 'Bank', 'value': 8},
{'id': 2, 'name': 'Entertainment', 'value': 3}
]
答案 0 :(得分:1)
此代码将完成工作:
<?php
$text = preg_replace_callback("!(<[a-zA-Z0-9]+>)([\S])!", function ($p) {
return $p[1] . " " . $p[2];
}, $text);
$text = preg_replace_callback("!([\S])(</[a-zA-Z0-9]+>)!", function ($p) {
return $p[1] . " " . $p[2];
}, $text);
?>
您可以在(</[a-zA-Z0-9]+>)
处找到任何可能的html标记(根据tag names specification)。