За последние 24 часа нас посетили 21200 программистов и 1634 робота. Сейчас ищут 1476 программистов ...

Неточная замена слов в тексте

Тема в разделе "Регулярные выражения", создана пользователем NotBot, 5 май 2011.

  1. NotBot

    NotBot Активный пользователь

    С нами с:
    5 май 2011
    Сообщения:
    2
    Симпатии:
    0
    Ребята, помогите, пожалуйста, с регуляркой на PHP, никак не могу сообразить. Итак, есть некий массив:

    PHP:
    1. $replacement = array
    2. (
    3. 'dog' => 'http://somelink1.com/',
    4. 'cat' => 'http://somelink2.com/'
    5. );
    И есть некий цикл:

    PHP:
    1. $message='Some text here';
    2. foreach($replacement as $key => $value)
    3. {
    4.   $message = str_ireplace($key, '<a href="'.$value.'">'.$key.'</a>', $message);
    5. }
    Всё вроде работает, но не так, как нужно. Помогите, пожалуйста, написать регистронезависимую регулярку, чтобы получалось примерно следующее:

    dog - заменяется на <a href="http://somelink1.com/">dog</a>
    doggy - заменяется на <a href="http://somelink1.com/">doggy</a>
    Mini-Dogs - заменяется на <a href="http://somelink1.com/">Mini-Dogs</a>

    И так далее.
     
  2. NotBot

    NotBot Активный пользователь

    С нами с:
    5 май 2011
    Сообщения:
    2
    Симпатии:
    0
    Помогли решить вопрос в другом месте :) Вот, может кому пригодится:

    PHP:
    1. $message='Some hot_dog_end text here ddogergy, cat , cat Mini-Dog';
    2. foreach($replacement as $key => $value)
    3. {
    4.    echo $message = preg_replace("/((?:[_a-z0-9-]*)?" . $key . "(?:[_a-z0-9-]*)?)/iu", '<a href="'.$value.'">\\1</a>', $message) . '<br/>';
    5. }