PHP&;mySQL-将单个HTML字段文本解析/分离为2个变量

PHP&;mySQL-将单个HTML字段文本解析/分离为2个变量,php,html,mysql,database,html-parsing,Php,Html,Mysql,Database,Html Parsing,提前感谢您抽出时间来处理我的问题 我正在使用PHP脚本查询mySQL数据库。不幸的是,产品描述、成分和附加信息(最后一段)与名称(名称是多余的,可以忽略)一起存储在一个字段中。所有文本都用HTML代码包围。我不想保存或存储任何HTML代码,但它可以用作分隔符 重要提示:HTML以编码方式存储,因此 <p> 下面是一个存储在mySQL数据库中的HTML代码示例(这正是它的存储方式。正如我前面提到的,HTML是编码的。): 这是与解码的HTML相同的代码片段(这不是它在mySQL数据

提前感谢您抽出时间来处理我的问题

我正在使用PHP脚本查询mySQL数据库。不幸的是,产品描述、成分和附加信息(最后一段)与名称(名称是多余的,可以忽略)一起存储在一个字段中。所有文本都用HTML代码包围。我不想保存或存储任何HTML代码,但它可以用作分隔符

重要提示:HTML以编码方式存储,因此

<p> 
下面是一个存储在mySQL数据库中的HTML代码示例(这正是它的存储方式。正如我前面提到的,HTML是编码的。):

这是与解码的HTML相同的代码片段(这不是它在mySQL数据库中的存储方式。我提供此代码只是为了视觉效果):


项目:
橄榄面包-烘焙-无麸质!
说明:
牛肉和猪肉的混合,再加上我们独特的调味品,形成一种基本的混合。在这个混合物中,我们加入大量的橄榄,将其做成面包,然后在天然硬木上吸烟,以获得独特的Koegel风味。
成分:
牛肉和猪肉、水、西班牙橄榄(橄榄、青椒、海藻酸钠、瓜尔豆胶、氯化钙、水、盐、乳酸)、脱脂奶粉、玉米糖浆、盐、红甜椒(甜椒、水、柠檬酸)、香料、葡萄糖、脱水洋葱。

每个面包重约6磅。

基本上,我希望忽略名称,将描述和附加信息(描述下面的最后一段)保存为$productDescription(可能在描述之后添加两个换行符以分隔附加信息),并将成分保存为$ProductComponents。我不想包含文本“描述:”或“成分:。。。只是信息之后马上如上所述,我只对原始文本感兴趣-我不想保存任何HTML代码。将信息存储到2个变量中时,应忽略所有HTML代码。

非常感谢您的帮助

谢谢,

-杰夫

编辑

现在的情况是mySQL数据库连接到opencart网站。在网站的管理端,没有单独的成分、描述等字段。其他内容(重量、尺寸、SKU、型号等)都有。这是因为opencart网站并非专门用于食品。它可以用于电子产品,在这种情况下,就不需要这样的领域了。店主(不是我)将所有这些信息输入到描述入口点。HTML可能会泄露这一点。该网站由另一个人管理(如果需要,我可以直接与他联系)。我不希望他或我自己修改opencart代码来添加额外的字段,除非这很容易做到


向opencart网站添加其他字段是否容易?这样,描述字段可以是独占的。谢谢你的回复

这个问题很简单。我认为这是一个错误的渣谁做了这个设计的人。他只是在数据库字段中存储了一段实体化HTML。现在您正试图从中提取特定信息

显然,在检索其中一个项目时,您要做的第一件事就是将其取消实体化(将
转换为
getnamespace(true);
foreach($ns作为$key=>$val){
$xml->registerXPathNamespace($key,$val);
}
未结算($ns);
现在您有了一个包含您的小文章的simpleXML对象。您可以使用各种API来提取所需的数据。请看这里的一些示例

我想你能相当容易地使用这种材料

注意,在评论中,有些人说你应该尝试从这些HTML节中提取有趣的信息,并将其放入专门的列中。这可能是真的,尤其是当你必须搜索这些数据或动态更新这些数据时

但也可以用XML/HTML存储内容。如果需要搜索,可以使用全文搜索

编辑 您可能需要将XML内容封装在一个
节中,就像这样。最后一项,关于面包重量的段落,可能会被视为额外内容而拒绝

 $xml= simplexml_load_string("<?xml version='1.0'?>\n<article>\n" .
    html_entity_decode($mydata) . "\n</article>\n";
 
$xml=simplexml\u load\u字符串(“\n\n”。
html\u实体\u解码($mydata)。“\n\n”;

至少对我来说,处理XML有点捉弄人。

我觉得你个人对这样一个吓人的设计不负责任,但我忍不住要-1-ing它。
“产品说明、成分和其他信息都存储在一个字段中”
是开发人员的噩梦。您最喜欢的XML或DOM解析库是什么?您知道如何使用SimpleXML、DOM或simple\u html\u DOM吗?当您使用这些代码时,我们建议您花点时间提取这些值并将其存储到自己的列中。自动完成正常的XML或DOM解析过程并不容易然而,我将配料添加到他们自己的一对多表中。我不负责这个可怕的设计。这就是为什么我向软件寻求指导和建议。现在发生的事情是mySQL数据库连接到一个opencart网站。在
&lt;table border=&quot;0&quot; cellpadding=&quot;2&quot; cellspacing=&quot;2&quot;&gt;
&lt;tbody&gt;
    &lt;tr valign=&quot;top&quot;&gt;
        &lt;td&gt;
            Item:&lt;/td&gt;
        &lt;td&gt;
            Olive Loaf - Baked - &lt;b&gt;Gluten Free!&lt;/b&gt;&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr valign=&quot;top&quot;&gt;
        &lt;td&gt;
            Description:&lt;/td&gt;
        &lt;td&gt;
            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.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr valign=&quot;top&quot;&gt;
        &lt;td&gt;
            Ingredients:&lt;/td&gt;
        &lt;td&gt;
            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.&lt;/td&gt;
    &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;
    &lt;strong&gt;Each loaf weighs approximately 6 lbs.&lt;/strong&gt;&lt;/p&gt;
<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>
 $xml= simplexml_load_string("<?xml version='1.0'?>\n" . html_entity_decode($mydata);
 $ns = $xml->getNamespaces(true);
 foreach ($ns as $key => $val) {
    $xml->registerXPathNamespace($key, $val);
 }
 unset($ns);
 $xml= simplexml_load_string("<?xml version='1.0'?>\n<article>\n" .
    html_entity_decode($mydata) . "\n</article>\n";