%2F而不是网址中的斜杠?

时间:2014-06-11 14:02:13

标签: javascript php woocommerce

我在url链接中遇到jquery语法问题:

这是我得到的链接(englisch):

  

...我的账户/郎=能量%2Fprint阶%2F2067%2F&安培;打印顺序型=收据

这是德语链接:

  

...我的账户/打印顺序/ 2067 /?打印顺序型=收据

现在的问题是,我的浏览器中的链接看起来不错

  

我的账户/打印顺序/ 2067 /?打印顺序型=收据

但实际上当我复制链接时,链接中总是有一个“%2F”而不是“/”,这导致了获得404的问题。

当我手动替换“%2F”时,链接可以正常工作。

问题出在哪里?有什么想法解决这个问题?

以下代码来自woocommerce / templates / myaccount / my-orders.php

if ($actions) { foreach ( $actions as $key => $action ) { echo '<a
 href="' . esc_url( $action['url'] ) . '" class="button ' .
 sanitize_html_class( $key ) . '">' . esc_html( $action['name'] ) .
 '</a>'; }

它会在“我的订单”页面上生成“打印”按钮。我正在使用mqtranslate german / englisch。在德语版本中一切正常 - 链接是正确的,当我切换语言时,有“%2f”而不是“/”。但也只是在第一部分之后(直到myaccount /) - 因为某些“/”被正确编码。

同样在英文版中它是“&amp;”在“print-order-type = receipt”之前而不是“?”之前。

2 个答案:

答案 0 :(得分:7)

对复制的值使用decodeURIComponent

decodeURIComponent('myaccount/?lang=en%2Fprint-order%2F2067%2F?print-order-type=receipt')

http://jsfiddle.net/7hySU/

答案 1 :(得分:1)

这样做:

echo '<a href="' . urldecode($action['url'] ) ....

更多相关信息: http://us1.php.net/manual/en/function.urldecode.php

urldecode()正在做egzactly你正在寻找的东西。只需在你的foreach循环中应用它。

这将解决您的问题

干杯:)

您可以在http://3v4l.org/mhVuV类型的phpfiddle上尝试:)

把它放在方框中:

    echo urldecode("myaccount/?lang=en%2Fprint-order%2F2067%2F&print-order-type=receipt");