在这种情况下,如何替换 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()); ?>"/>
与其在

每次需要时都手动执行字符串替换,我建议在函数中添加以下过滤器.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/ -->

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

试试这个:

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