首页 > 解决方案 > PHP - 如何过滤内容并在其他地方彼此相邻显示

问题描述

如何过滤我的内容并将这些值一起显示在其他地方。内容正在通过我们的客户端填充的 XML 加载。因此我无法更改这些值。问题是我的价值观不同。我目前正在过滤一些值:

if (!empty($arraywithvalues)) {
    $array = explode("<br>", $arraywithvalues);
    foreach( $array as $key => $value){
        if (
            strpos(strtolower($value),'oppervlakte') !== FALSE ||
            strpos(strtolower($value),'perceel') !== FALSE ||
            strpos(strtolower($value),'golf') !== FALSE 
        ) {
            $filtered_content[] = $value;
            unset($array[$key]);
        }
    };

这是为了过滤掉文本位,这在这个网站上可以看到成功。问题是仍然需要过滤掉一些值,例如:

20平方米

20公里

然而过滤本身是没有问题的。我遇到的问题是将值放在一个和另一个旁边。举个例子。距离高尔夫(第一个过滤值) - 20 公里(第二个过滤值)。我怎样才能做到这一点?

导入时的 XML:

string(82)"

Bebouwde oppervlakte

80 M2

Terras oppervlakte

20 M2

Keuken oppervlakte

12 M2"

标签: phpfiltering

解决方案


如果记录按上述顺序排列,则相当容易。您缓冲第一行,然后继续阅读,直到出现第二个值的行。然后连接缓冲区和当前值。

if (!empty($arraywithvalues)) {
    $array = explode("<br>", $arraywithvalues);
    foreach( $array as $value){
        if ( strpos(strtolower($value),'oppervlakte') !== FALSE ||
             strpos(strtolower($value),'perceel') !== FALSE ||
             strpos(strtolower($value),'golf') !== FALSE            ) {
            $buffer = $value;
        } elseif ( strpos(strtolower($value),'m2') !== FALSE ||
                   strpos(strtolower($value),'km') !== FALSE       ) { 
            $filtered_content[] = $buffer . ' - ' . $value;
        }
    }
}

推荐阅读