Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 多次预更换_Php_Regex_Preg Replace - Fatal编程技术网

Php 多次预更换

Php 多次预更换,php,regex,preg-replace,Php,Regex,Preg Replace,我有很多字符串都是以@和pseudo开头的,我想通过regex将这些pseudo更改为实名。 我没有太多的伪正则表达式(可能5到10个),所以我可以使用一个简单的正则表达式,如: $find = array('@alex', '@donald'); $replace = array('Alex A.', 'Donald B.' ); $result= preg_replace($find, $replace, $feed->itemTitle

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

        $find = array('@alex', '@donald');
        $replace = array('Alex A.', 'Donald B.' );
        $result= preg_replace($find, $replace, $feed->itemTitle);
我的问题是,我已经对这些字符串进行了pre_替换,从而删除了链接。到目前为止,这是我的正则表达式:

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


我想不出一个混合这两个正则表达式的解决方案。(regex是我不习惯的东西)。

对于链接已经有了一个
preg\u replace
,这不是问题,不用担心

如果需要,可以构建一个包含捕获组的巨型模式,用于
preg\u replace\u callback
,该模式允许回调函数根据捕获组编号选择要返回的替换字符串。然而,这不是一个好办法

因为,您要替换固定字符串(
@alex
@donald
是固定字符串),最好、最快的方法是使用
strtr
(即使您再次解析字符串):


不要试图把它们混在一起。用两个
preg\u replace()
语句完成。谢谢Amal!那么我应该如何进行呢?如果要进行多个字符串替换,只需使用带有数组的
str\u replace()
作为搜索和替换参数。请看下面的示例。
$trans = array('@alex'   => 'Alex A.',
               '@donald' => 'Donald B.');

$result = strtr($feed->itemTitle, $trans);