如何在Wordpress中修复braces()问题?

时间:2014-07-20 10:19:24

标签: php wordpress

我对大括号()的输出和位置有疑问。当代码中出现大括号时,它会在输出中错误显示。

任何人都可以解决这个问题吗?

<?php echo "I am (developer)"; ?>

这里开发人员用大括号括起来,上面代码的输出如下

  

(我是(开发人员)

而不是

  

我是(开发人员)

如何发生此问题

1 个答案:

答案 0 :(得分:1)

注意

我已将此答案发布到same exact question on WPSE。如果任何人可以添加,请做。经过大量编辑后的用户告诉我他正在使用woocommerce,并希望使用过滤器来批量替换)的所有实例,但不幸的是我不知道woocommerce,所以无法回答那个部分。除此之外,这是我的答案。希望它帮助在这个网站上提出这个问题的每个人

这不是Wordpress相关的问题。在我记得你问了一个关于这个问题的问题后,我把我的测试网站改为RTL,就在那里,

<?php echo "I am (developer)"; ?>

渲染

  

(我是(开发人员)

切换到RTL语言时,这是正常现象。问题是,parentheses or simply ()没有任何方向。如果只使用一个(

<?php echo "I am (developer"; ?>

正确输出为

  

我是(开发者

当第二个括号出现时,事情就会变得混乱。由于没有固有的方向,浏览器只是反转第二个括号的方向,在这种情况下),在运行中,并在句子前面粘贴,这是你在问题中看到的

要纠正这个问题,您需要以某种方式“告诉”浏览器此方向问题,以便以正确的字符顺序输出文本。这是使用left-to-right mark (LRM)的地方。有关实施的更多信息,read here

  

用于设置相邻字符相对于文本方向分组的方式。

要使用&lrm;&#x200e;的字符,所以会做类似的事情

<?php echo "I am (developer)&lrm;"; ?> 

<?php echo "I am (developer)&#x200e;"; ?>

编辑1

似乎从您的链接可能是正常LTR造成的。然后,您必须使用right-to-left mark (RLM)。它使用以下内容:&rlm;&#x200f;

所以你需要做以下

<?php echo "I am (developer)&rlm;"; ?> 

<?php echo "I am (developer)&#x200f;"; ?>

编辑2

如果您需要替换标题中的),则可以使用the_title过滤器获取所有实例,并将其替换为str-replace。这应该进入 functions.php

function the_title_trim($title) {
return str_replace(')', ')&lrm;', $title);
}
add_filter('the_title', 'the_title_trim', 999);

只需使用相反的方法进行测试

function the_title_trim($title) {
return str_replace(')', ')&rlm;', $title);
}
add_filter('the_title', 'the_title_trim', 999);

编辑3

由于您现在只告诉我您正在使用与此无关的woocommerce,因此您需要将过滤器自己用于他们正在使用的过滤器。我不知道woocommerce所以我不能再回答你的问题了。

请去检查filters that woocommerce使用情况。然后,使用适当的过滤器

替换 EDIT 2 中我的函数中的相应代码