如何用我自己的文本替换某些PHP值?

时间:2015-06-05 10:24:24

标签: php arrays string wordpress replace

这是我的PHP代码:

$order_data = array(
    'shipping_method' => $order->get_shippingmethod(),
);

' shipping_method' 值当前正在导出以下三个值:

  • '免费送货'
  • ' FedEx_GROUND'
  • ' UPS Next Day Air'

我想用自己选择的方式替换此文本。我需要在上面的代码中添加什么来将文本替换为其他内容?因此,如果' shipping_method' = ' FedEx GROUND' ,我想用替换文字'联邦快递' 。因此,这三个值将转换为以下内容:

  • '免费送货' = '免费'
  • ' FedEx_GROUND' = ' FedEx'
  • ' UPS第二天Air' = ' UPS'

我没有任何PHP技能可言,足以构建WordPress模板和调整其他代码。我正在编辑此代码以将WooCommerce订单导出为CSV文件,但我需要' shipping_method' 文本可以替换为我选择的文字。

请不要嘲笑我用PHP代码替换文本的尴尬尝试:

$order_data = array(
    'shipping_method' => $order->get_shipping_method(str_replace('Free Shipping', 'Free', $str))
);

这显然不起作用,非常感谢任何帮助!

我使用的插件是订单/客户CSV导出 WooThemes http://docs.woothemes.com/document/woocommerce-customer-order-csv-export-developer-documentation/

1 个答案:

答案 0 :(得分:2)

详细方式:

你很接近......但我会简化一下并放弃str_replace()。我会做类似以下的事情:

$shipping_method = $order->get_shipping_method();

if ( $shipping_method === 'Free Shipping' ) {
    $shipping_method = 'Free';
} elseif ( $shipping_method === 'FedEx_GROUND' ) {
    $shipping_method = 'FedEx';
} elseif ( $shipping_method === 'UPS Next Day Air' ) {
    $shipping_method = 'UPS';
}

$order_data = array(
    'shipping_method' => $shipping_method,
);

但是,无法保证更改送货方式值不会破坏其他依赖它的东西...

One-Liner Alternative:

您还可以使用preg_split()进一步简化此操作(假设分隔符始终为空格或下划线)。这完全消除了对上述if/elseif条件的需求:

$order_data = array(
    'shipping_method' => preg_split('/[\ _]/', $order->get_shipping_method())[0],
);