preg_replace:使用 % 替换

发布于 2024-08-24 00:34:16 字数 399 浏览 4 评论 0 原文

我正在使用函数 preg_replace 但我不知道如何使其工作,该函数似乎对我不起作用。

我想做的是,如果任何单词包含 %(百分比)字符,则将字符串转换为链接。

例如,如果我有字符串“go to %mysite”,我想将 mysite 单词转换为链接。 我尝试了以下方法......

$data = "go to %mysite";
$result = preg_replace('/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/e', 
          '\\1%<a href=#>\\2</a>', $data);

但它不起作用。

对此的任何帮助将不胜感激。

谢谢

胡安

I'm using the function preg_replace but I cannot figure out how to make it work, the function just doesn't seem to work for me.

What I'm trying to do is to convert a string into a link if any word contains the % (percentage) character.

For instance if I have the string "go to %mysite", I'd like to convert the mysite word into a link.
I tried the following...

$data = "go to %mysite";
$result = preg_replace('/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/e', 
          '\\1%<a href=#>\\2</a>', $data);

...but it doesn't work.

Any help on this would be much appreciated.

Thanks

Juan

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

半窗疏影 2024-08-31 00:34:16

这里的问题是 e 修饰符,它将替换评估为 php 代码,并因致命错误而失败


删除 e 属性将输出 go to % 如果这是所需的结果,您无需更改任何其他内容。

但我认为 preg_replace_callback 是您真正需要的,即:

function createLinks($matches)
{
    switch($matches[2])
    {
        case 'mysite':
            $url = 'http://mysite.com/';
            break;
        case 'google':
            $url = 'http://www.google.com/';
            break;
    }

    return "{$matches[1]}%<a href=\"{$url}\">{$matches[2]}</a>";
}

$data = "go to %mysite or visit %google";
$data = preg_replace_callback(
    '/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/',
    'createLinks',
    $data
);

这将导致转到 %mysite或访问 %google

The problem here is e modifier which evaluates the replacement as php code and fails with fatal error


Removing e attribute will output go to %<a href=#>mysite</a> and if it is desired result, you don't have to change anything else.

But I think that preg_replace_callback is what you really need, ie:

function createLinks($matches)
{
    switch($matches[2])
    {
        case 'mysite':
            $url = 'http://mysite.com/';
            break;
        case 'google':
            $url = 'http://www.google.com/';
            break;
    }

    return "{$matches[1]}%<a href=\"{$url}\">{$matches[2]}</a>";
}

$data = "go to %mysite or visit %google";
$data = preg_replace_callback(
    '/(^|[\s\.\,\:\;]+)%([A-Za-z0-9]{1,64})/',
    'createLinks',
    $data
);

that will result in go to %<a href="http://mysite.com/">mysite</a> or visit %<a href="http://www.google.com/">google</a>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文