如何替换一些单词,数字,字符

时间:2011-08-31 02:03:53

标签: php replace

在我的数据库中,很多帖子都有一些字符,如:

[media id = 468 width = 660 height = 440]

使用php我想获取媒体ID(数字)并将其替换为另一个函数,同样在获取id之后,不要在我的帖子中显示[media id = 468 width = 660 height = 440] HTML

请帮助一下吗? 非常感谢你

PS:我不需要身高和宽度。

1 个答案:

答案 0 :(得分:1)

您可以使用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,这将只返回相同的文本。这是一个相当简单的例子,我相信你可以弄清楚如何调整行为以满足你的需要。