Php &引用;preg“U replace()”字样;工作不正常。

Php &引用;preg“U replace()”字样;工作不正常。,php,arrays,preg-replace,Php,Arrays,Preg Replace,我有一个文本文件,我用http:// 现在我想替换所有的http://。在我与“”的匹配数组中,但什么都没有发生我甚至没有收到错误 $list = file_get_contents( 'file.txt' ); preg_match_all( "/http:\/\/.([a-z]{1,24}).([a-z^0-9-]{1,23}).([a-z]{1,3})/", $list, $matches ); for ($i=0; $i>=50; $i++) { $pattern = a

我有一个文本文件,我用
http://
现在我想替换所有的
http://
。在我与“”的匹配数组中,但什么都没有发生我甚至没有收到错误

$list = file_get_contents( 'file.txt' );
preg_match_all( "/http:\/\/.([a-z]{1,24}).([a-z^0-9-]{1,23}).([a-z]{1,3})/", $list, $matches );

for ($i=0; $i>=50; $i++) {
    $pattern = array();
    $replacement = array();
    $pattern[0][$i] = "/http:\/\/.[w-w]{1,3}/";
    $replacement[0][$i] = '';

    preg_replace( $pattern[0][$i], $replacement[0][$i], $matches[0][$i] );
}

print_r($matches);

您的循环从不运行,因为
0>=50
产生
false
。也就是说,您要查找的是地图操作:

$matches = array_map(function($match) {
    return preg_replace('~^http://w{1,3}~', '', $match);
}, $matches[0]);
print_r($matches);

preg\u match\u all
也有问题。正则表达式中的句点匹配任何字符

$list = file_get_contents( 'file.txt' );
preg_match_all( "/http:\/\/([a-z]{1,24})\.([a-z^0-9-]{1,23})\.([a-z]{1,3})/", $list, $matches );

$pattern = "/http:\/\/(.[w-w]{1,3})/";
$replacement = '$1';
$matches[0] = preg_replace( $pattern, $replacement, $matches[0] );

print_r($matches);

你能给我们看一下你的输入“file.txt”吗?你确定你的循环条件是正确的吗?此循环从未对($i=0;$i>=50;$i++)执行过
。{
是一个非操作。也许它应该对($i=0;$i1)执行
。您的循环条件不正确。2.匹配域名的正则表达式不正确。您需要在正则表达式中转义点元字符。请尝试以下操作:
~http:/([a-z]{1,24})\([a-z^0-9-]{1,23})\。([a-z]{1,3})~
.3.
preg\u replace()
不返回匹配项。您需要将其存储在变量中,如:
$ret=preg\u replace(…);
echo
it:
echo preg\u replace(…)
。非常感谢先生)我总是两个都试,因为我忘了每天吃什么time@user3434985:您匹配域名的正则表达式也不正确。请参阅问题下的。