如何将奇怪的文本转换为特定的单词

时间:2017-01-27 05:27:36

标签: php wordpress

我正在使用woocommerce api手动添加订单。

我手动订购了版本产品,并在管理端显示了良好的编辑订单页面。

现在,问题是使用polylang插件的网站。

在那里,有两种语言。我可以用英语成功添加订单。

但是当我尝试用另一种语言(阿拉伯语)添加产品时。它以奇怪的文本格式返回一些订单详细信息。在我的API中它返回:

"product_variation_details": "%d8%a7%d9%84%d8%ad%d8%ac%d9%85: صغير"

在编辑顺序页面中,它以正确的方式显示:enter image description here

我使用下面的代码来获取API中的订单详细信息:

$variation_id = $single_items['item_meta']['_variation_id'][0];
if ($variation_id != 0) {
    $variation = wc_get_product($variation_id);                
    $product_variation_details = wc_get_formatted_variation($variation->get_variation_attributes(), true);
}

我经常搜索,但无法获得更好的解决方案。任何帮助都会受到影响。提前谢谢。

2 个答案:

答案 0 :(得分:9)

似乎正在进行一些解码。 Urldecode

如果我拿到给定的字符串并打印出urldecoded,则会返回:

print urldecode("%d8%a7%d9%84%d8%ad%d8%ac%d9%85");
الحجم 

我希望这会有所帮助

答案 1 :(得分:2)

尝试使用以下内容替换if内的所有内容:

$variation = wc_get_product( $variation_id );
$variation_attributes = $variation->get_variation_attributes();
$variation_attributes_decoded = array();

foreach ( $variation_attributes as $name => $value ) {
  $decoded_name = rawurldecode( $name );
  $variation_attributes_decoded[ $decoded_name ] = $value;
}

$product_variation_details = wc_get_formatted_variation( $variation_attributes_decoded, true );

这是未经测试的。

这是wc_get_formatted_variation()中输出您的问题文字的行:

$variation_list[] = wc_attribute_label( str_replace( 'attribute_', '', $name ) ) . ': ' . rawurldecode( $value );

正如您所看到的,它正在解码$value而不是$name。我的解决方案应该提前解码$name

编辑:修复了代码错误。