用PHP查找和替换字符串中的关键字

vtwuwzda  于 2023-01-01  发布在  PHP
关注(0)|答案(1)|浏览(118)

我用这段代码来查找和替换某个字符串,如果它介于{{}}之间。

$string = 'This is my {{important keyword}}.';
$string = preg_replace('/{{(.*?)}}/', '<a href="$1">$1</a>', $string);
return $string;

如何将<a href="$1">$1</a>部分更改为如下形式:

<a href="https://example.com/important-keyword">important keyword</a>

因此,href需要将match项转换为一个slug(用破折号分隔的单词,没有重音符号或特殊字符)。
谢谢。

o8x7eapl

o8x7eapl1#

您必须使用preg_replace_callback()来允许更改函数中的匹配项。
另请参见use($url)以允许函数访问外部变量。
代码:

$url = 'https://example.com';
$string = 'This is my {{important keyword}}.';

$string = preg_replace_callback('/{{(.*?)}}/', function($matches) use ($url) {
    $newURL = $url . '/' . str_replace(' ', '-', $matches[1]);
    return '<a href="' . $newURL . '">' . htmlentities($matches[1]) . '</a>';
}, $string);

echo $string;

输出:

This is my <a href="https://example.com/important-keyword">important keyword</a>.

相关问题