preg_replace:% kullanarak değiştirme

1 Cevap php

Ben fonksiyon preg_replace kullanıyorum ama o iş yapmak için nasıl anlamaya değil, işlevi sadece benim için çalışmak için görünmüyor.

Ne yapmaya çalışıyorum herhangi bir kelime% (yüzde) karakteri içeriyorsa bir bağlantı içine bir dize dönüştürmek için.

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);

... Ama çalışmıyor.

Herhangi bir Yardım çok takdir.

Teşekkürler

Juan

1 Cevap

Burada sorun php kodu olarak değiştirme değerlendirir ve ölümcül bir hata ile başarısız e değiştirici


Çıkarma e nitelik çıktısı go to %<a href=#>mysite</a> ve sonuç isteniyorsa, başka bir şey değiştirmek zorunda değilsiniz.

Ama ben preg_replace_callback Gerçekten, yani ne gerek olduğunu düşünüyorum:

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
);

Bu go to %<a href="http://mysite.com/">mysite</a> or visit %<a href="http://www.google.com/">google</a> neden olur