繁体   English   中英

在这种情况下如何替换php中的字符串值?

[英]How do I replace the string value in php in this case?

我不是一个PHP的家伙所以不知道怎么做,但尝试了下面给出的东西。

需求:

<link href="<?php the_permalink(); ?>">

目前给我这个输出:

<link href="http://example.com/au/">

我需要在运行时使用正则表达式或任何字符串替换函数更改URL的一部分。

像这样的东西:

<link href="<?php echo str_replace("/au/","/uk/","<?php the_permalink(); ?>"); ?>"/>

我认为这会奏效,但它给了我这个:

<link href="http://example.com/uk/"/>

请告知什么是正确的解决方案。

首先,当您已经使用PHP标记时,不需要PHP标记。 第二个函数the_permalink()实际上并没有返回你想要的值,它只是显示它(请参阅这篇文章,了解更多有关显示和返回的区别: Wordpress(ACF)函数不返回值

所以你可能想在这里使用get_permalink() ,因为这个函数返回你想要的值。 然后你几乎可以像你已经尝试过的那样使用它:

<link href="<?php echo str_replace("/au/","/uk/", get_permalink()); ?>"/>

我不建议每次需要时都手动更换字符串,我建议在functions.php中添加以下过滤器:

function au_to_uk_permalink($url) {
    return str_replace('/au/','/uk/', $url);
}
add_filter('the_permalink', 'au_to_uk_permalink');

您现在可以像往常一样在模板中使用the_permalink()函数,并自动应用字符串替换:

<?php the_permalink(); ?>
<!-- Outputs: http://example.com/uk/some-post/ -->

阅读有关Codex中the_permalink过滤器的更多信息。

尝试这个:

<?php
  $link = get_permalink();
  $link = str_replace("/au","/uk",$link);
?>
<link href="<?php echo $link; ?>" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM