多个preg_replace

时间:2014-07-06 10:15:12

标签: php regex preg-replace

我有许多字符串都以@和a伪开头,我想将这些伪通过正则表达式更改为真实姓名。 我没有很多伪(可能是5到10)所以我可以使用简单的正则表达式:

        $find = array('@alex', '@donald');
        $replace = array('Alex A.', 'Donald B.' );
        $result= preg_replace($find, $replace, $feed->itemTitle);

我的问题是我已经在这些字符串上有一个pre_replace,它会删除链接。到目前为止,这是我的正则表达式:

<?php echo preg_replace('@(https?://([-\w\.]+[-\w])+(:\d+)?(/([\w/_\.#-]*(\?\S+)?[^\.\s])?)?).....@',' ',$feed->itemTitle); ?>

我无法想出一个可以混合两个正则表达式的解决方案。 (正则表达式是我无法容忍的事情)。

1 个答案:

答案 0 :(得分:2)

如果链接已经preg_replace不是问题,请不要为此烦恼。

如果您希望可以构建一个包含捕获组的巨型模式,以便与preg_replace_callback一起使用,允许回调函数根据捕获组编号选择要返回的替换字符串。但是,这不是好方法。

因为,您想要替换固定字符串@alex@donald是固定字符串)最好也是最快的方法是使用strtr (即使你第二次解析字符串)

$trans = array('@alex'   => 'Alex A.',
               '@donald' => 'Donald B.');

$result = strtr($feed->itemTitle, $trans);
相关问题