我对大括号()
的输出和位置有疑问。当代码中出现大括号时,它会在输出中错误显示。
任何人都可以解决这个问题吗?
<?php echo "I am (developer)"; ?>
这里开发人员用大括号括起来,上面代码的输出如下
(我是(开发人员)
而不是
我是(开发人员)
如何发生此问题
答案 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
用于设置相邻字符相对于文本方向分组的方式。
要使用‎
或‎
的字符,所以会做类似的事情
<?php echo "I am (developer)‎"; ?>
或
<?php echo "I am (developer)‎"; ?>
编辑1
似乎从您的链接可能是正常LTR造成的。然后,您必须使用right-to-left mark (RLM)。它使用以下内容:‏
或‏
所以你需要做以下
<?php echo "I am (developer)‏"; ?>
或
<?php echo "I am (developer)‏"; ?>
编辑2
如果您需要替换标题中的)
,则可以使用the_title
过滤器获取所有实例,并将其替换为str-replace
。这应该进入 functions.php
function the_title_trim($title) {
return str_replace(')', ')‎', $title);
}
add_filter('the_title', 'the_title_trim', 999);
只需使用相反的方法进行测试
function the_title_trim($title) {
return str_replace(')', ')‏', $title);
}
add_filter('the_title', 'the_title_trim', 999);
编辑3
由于您现在只告诉我您正在使用与此无关的woocommerce,因此您需要将过滤器自己用于他们正在使用的过滤器。我不知道woocommerce所以我不能再回答你的问题了。
请去检查filters that woocommerce使用情况。然后,使用适当的过滤器
替换 EDIT 2 中我的函数中的相应代码