【发布时间】:2012-12-16 06:52:24
【问题描述】:
提前感谢您抽出宝贵时间解决我的问题。
我正在使用 PHP 脚本来查询 mySQL 数据库。不幸的是,产品描述、成分和附加信息(最后的段落)都与名称一起存储在一个字段中(名称是多余的,可以忽略)。所有文本都包含在 HTML 代码中。我不想保留或存储任何 HTML 代码,但它可能用作分隔符。
重要提示: HTML 是编码存储的,所以
<p>
存储为
<p>
这是一个存储在 mySQL 数据库中的 HTML 代码示例(这是它的确切存储方式。正如我之前提到的,HTML 是经过编码的。):
<table border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr valign="top">
<td>
Item:</td>
<td>
Olive Loaf - Baked - <b>Gluten Free!</b></td>
</tr>
<tr valign="top">
<td>
Description:</td>
<td>
A blend of beef and pork along with our unique spices to create a base mix. To this mix we add plenty of olives and form it into a loaf, we then smoke this over natural hardwoods for a unique Koegel flavor.</td>
</tr>
<tr valign="top">
<td>
Ingredients:</td>
<td>
Beef and Pork, Water, Spanish Olives (Olives, Pimentos, Sodium Alginate, Guar Gum, Calcium Chloride, Water, Salt, Lactic Acid), Nonfat Dry Milk, Corn Syrup, Salt, Red Sweet Peppers (bell peppers, water, citric acid.), Spices, Dextrose, Dehydrated Onions.</td>
</tr>
</tbody>
</table>
<p>
<strong>Each loaf weighs approximately 6 lbs.</strong></p>
这里是相同的代码 sn-p 与 HTML 解码(这不是它在 mySQL 数据库中的存储方式。我提供这个只是为了视觉。):
<table border="0" cellpadding="2" cellspacing="2">
<tbody>
<tr valign="top">
<td>
Item:</td>
<td>
Olive Loaf - Baked - <b>Gluten Free!</b></td>
</tr>
<tr valign="top">
<td>
Description:</td>
<td>
A blend of beef and pork along with our unique spices to create a base mix. To this mix we add plenty of olives and form it into a loaf, we then smoke this over natural hardwoods for a unique Koegel flavor.</td>
</tr>
<tr valign="top">
<td>
Ingredients:</td>
<td>
Beef and Pork, Water, Spanish Olives (Olives, Pimentos, Sodium Alginate, Guar Gum, Calcium Chloride, Water, Salt, Lactic Acid), Nonfat Dry Milk, Corn Syrup, Salt, Red Sweet Peppers (bell peppers, water, citric acid.), Spices, Dextrose, Dehydrated Onions.</td>
</tr>
</tbody>
</table>
<p>
<strong>Each loaf weighs approximately 6 lbs.</strong></p>
基本上,我想忽略名称,将描述和附加信息(描述下方的最后一段)保存为$productDescription(可能在描述后添加两个换行符以分隔附加信息),并将成分保存为$产品成分。我确实不想要包含文本“描述:”或“成分:”......只是紧随其后的信息。 如上所述,我只对原始文本感兴趣——我不想保存任何 HTML 代码。将信息存储到 2 个变量中时,应忽略所有 HTML 代码。
非常感谢任何帮助!
谢谢,
-杰夫
编辑
mySQL 数据库连接到了一个 opencart 网站。在网站的管理方面,没有单独的成分、描述等字段。还有其他所有内容(重量、尺寸、SKU、型号等)。这是因为 opencart 网站并非专门用于食品。它可以用于电子产品,在这种情况下,不需要这些领域。店主(不是我)将所有这些信息输入到描述入口点。 HTML 可能会泄露这一点。该网站由另一个人管理(如果需要,我可以直接与他联系)。我不希望他或我自己更改 opencart 代码以添加额外的字段,除非它可以轻松完成。
向 opencart 网站添加其他字段是否容易?这样,描述字段可以是独占的。感谢您的回复。
【问题讨论】:
-
我觉得你个人不对这种可怕的设计负责,但我无法抗拒 -1-ing 它。
"product description, ingredients, and additional information are all stored in one single field"是开发者的噩梦。 -
您首选的 XML 或 DOM 解析库是什么?你知道如何使用 SimpleXML、DOM 或 simple_html_dom 吗?
-
当您使用此代码时,建议您花时间提取这些值并将它们存储到它们自己的列中。然而,将成分正确规范化到自己的一对多表中的过程自动化并不容易。
-
我不对可怕的设计负责。这就是我向 SOF 寻求指导和建议的原因。发生的事情是 mySQL 数据库连接到一个 opencart 网站。在网站的管理方面,没有单独的成分、描述等字段。还有其他所有内容(重量、尺寸、SKU、型号等)。这是因为 opencart 网站并非专门用于食品。它可以用于电子产品,在这种情况下不需要这些领域。店主(不是我)将所有这些信息输入到描述入口点。 HTML 可能会泄露这一点。
-
...续上:该网站由另一个人管理(如果需要,我可以直接与他联系)。我不希望他或我自己更改 opencart 代码以添加额外的字段,除非它可以轻松完成。我实际上将收集到的数据编码为 JSON,并由 iOS 应用程序读取。迈克尔:我对你列出的任何事情都不熟悉。不是重申我自己,但是向 opencart 网站添加其他字段是否容易?这样,描述字段可以是独占的。感谢您的回复。
标签: php html mysql database html-parsing