1

我正在为我的多语言 Wordpress 网站使用 qTranslateX 插件。我设置了 2 种语言:en & fr。我想知道如何仅针对特定语言以编程方式更新帖子名称?我到处搜索,但没有找到解决方案。

一种解决方法是使用 preg_replace 函数,它看起来像这样(假设帖子名称是:My [en]English[fr]French[:] post name)

$start = '\[en\]';
$end  = '\[';
$original_name = 'My [en]English[fr]French[:] post name';
$replace_with = 'Awsome english new';
$new_post_name = preg_replace('#('.$start.')(.*)('.$end.')#si', '$1'.$replace_with.'$3', $original_name ,1);
echo $new_post_name ;

这会输出以下不正确的字符串,因为法语文本已被删除,因此 preg_replace 不限制第一次出现:

我的 [zh]Awsome 英文新 [:] 帖子名称

预期的输出是:

我的 [en]Awsome 英文新 [fr]French[:] 帖子名称

我有点卡在这里...

4

1 回答 1

2

使要替换的部分不贪心:

$new_post_name = preg_replace('#('.$start.')(.*?)('.$end.')#si', '$1'.$replace_with.'$3', $original_name ,1);
//                                      here __^
于 2018-09-22T09:38:42.787 回答