PHP WooCommerce从字符串中删除p标记

时间:2014-01-22 10:03:13

标签: php wordpress woocommerce str-replace

使用WooCommerce for Wordpress我创建了产品属性,我有一系列值,我使用;作为分隔符将行拆分为<td>,但有问题的是Wordpress不断向输出添加<p>标签。

查看输出HTML似乎将第一个$applies[0]<p></p>包装在一起,然后$applies[3]包含<p></p>。当我更希望从字符串中删除所有<p>时。

我尝试了echo str_replace("<p>","",$apply);$applied = preg_replace('#<p[^>]*>(\s|&nbsp;?)*</p>#', '', $apply);,但仍然没有运气。

PHP

<tr class="<?php if ( ( $alt = $alt * -1 ) == 1 ) echo 'alt'; ?>">
<th><?php echo $woocommerce->attribute_label( $attribute['name'] ); ?></th>
<td><?php
    if ( $attribute['is_taxonomy'] ) {  
        $values = woocommerce_get_product_terms( $product->id, $attribute['name'], 'names' );
        echo apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
    } else {
        //Convert pipes to commas and display values
        $values = array_map( 'trim', explode( '|', $attribute['value'] ) );
        $apply = apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );
        $applies = explode(";", $apply);
        echo $applies[0]."</td><td>";
        if ($applies[2] != ''){
            echo "<font style='text-decoration:line-through'>".$applies[1]."</font></td><td>";
        } else {
            echo $applies[1]."</td><td>";
        }
        echo $applies[2]."</td><td>";
            $applies3 = str_replace(' ', '', $applies[3]);
            $applies3 = str_replace('<p></p>', '', $applies3);
        echo $applies[3];
    }
        ?></td>
    </tr>

输出HTML

<tr class="">
    <th>Container</th>
    <td><p>W2300 x D1030 x H940mm</p></td><td> £19953</td><td></td><td> in stock<p></p></td>
</tr>

1 个答案:

答案 0 :(得分:2)

<强>更改

$apply = apply_filters( 'woocommerce_attribute', wpautop( wptexturize( implode( ', ', $values ) ) ), $attribute, $values );

$apply = apply_filters( 'woocommerce_attribute', wptexturize( implode( ', ', $values ) ), $attribute, $values );

从此行中删除wpautop(),它会删除<p>代码。