Как заменить некоторые слова, цифры, символы - PullRequest
0 голосов
/ 31 августа 2011

В моей базе данных во многих сообщениях есть такие символы, как:

[идентификатор медиа = 468 ширина = 660 высота = 440]

С помощью php я хочу получить идентификатор медиа (число) изамените его другой функцией, также после получения идентификатора, не хотите, чтобы [media id = 468 width = 660 height = 440] показывался в моих сообщениях в html.

Пожалуйста, кто-нибудь может помочь с этим?Большое спасибо

PS: мне не нужны высота и ширина.

1 Ответ

1 голос
/ 31 августа 2011

Вы можете использовать preg_replace_callback():

function do_stuff($values) {
    return '<object id="' . $values['id'] . '" />';
}

$text = 'some stuff [media id=468 width=660 height=440] more stuff';

$new_text = preg_replace_callback('@\[media id=(?P<id>\S+) width=\S+ height=\S+\]@', 
                      'do_stuff', $text);

echo "text: $text\n new text: $new_text";

Даст вам

text: some stuff [media id=468 width=660 height=440] more stuff
new text: some stuff <object id="468" /> more stuff

Если вы измените свой do_stuff() обратный вызов:

function do_stuff($values) {
    $allowed = array('468', '222'); 

    if (in_array($values['id'], $allowed)) {
        return '<object id="' . $values['id'] . '" />';
    } else {
        return $values[0]; 
    }
}

Это просто вернет вам тот же текст, если id не 468 или 222. Это довольно простой пример, я уверен, что вы сможете выяснить, как настроить поведение в соответствии с вашими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...