我试图用粗体和斜体的正则表达式来格式化这个文本,这样看起来就像标准的带有断点的版本:
原件:
特别使用许可证#2011-0016605-小街道单身家庭住宅-公开听证和考虑在低于标准地段建造一套单一家庭住宅的请求;划为R-2-5/单人和两个家庭。申请人: Brian
有中断的标准版本:
SPECIAL USE PERMIT #2011-0016
605 LITTLE STREET
SINGLE FAMILY DWELLING
Public hearing and consideration of a request to construct a single family dwelling on a
substandard lot; zoned R-2-5/Single and Two Family. Applicant: Brian Thomas发布于 2011-08-20 01:32:26
首先,我建议您避免使用<br>,而是选择一些通用的标记,比如<div class="address">...</div>。如果您稍后决定更改显示或导出数据,这将是有用的。
提取第一个块是很容易的/^(.+\s\d{4}-\d+)\s+/,但是没有简单的方法在地址和标题("STREET“和"SINGLE")之间分割。我相信你必须建立一个启发式,但要小心测试它。收集一个很好的数据样本。然后为提取块的函数编写一些单元测试:
// with PHPunit.
// You should use @provider for testing on multiple input data
// And an Extract class with methods would be cleaner than functions.
function titleTest() {
assertEquals(
array("SPECIAL USE PERMIT #2011-0016", "605 LITTLE STREET..."),
extractTitle("SPECIAL...")
);
}
function addressTest() {
list($title, $rest) = extractTitle("SPECIAL...");
assertEquals(
array("605 LITTLE STREET", "SINGLE..."),
$rest一旦测试失败,就可以构建函数extractAddress(),直到它在每个示例上成功为止。它可能会结合几种方式,例如标题值/单行行的列表./,地址‘end /STREET\驱动器./
发布于 2011-08-22 08:52:07
我想我有一个很简单的解决办法。原始文本可能有换行符,如\n \r,您需要在<br>中转换它们。如果我的理论是正确的,你应该能够通过这样做来格式化文本:
str_replace("\n", "<br>", $string);试一试,让我知道它是否有效。
https://stackoverflow.com/questions/7127422
复制相似问题