使用preg_replace php替换url

使用preg_replace php替换url,php,preg-replace,Php,Preg Replace,嗨,据我所知,preg_replace可用于格式化字符串,但 在这方面我需要帮助 我的url将是这样的 www.example.com/en/index.php 或 我想要的是得到 结果是 www.example.com/index.php 我需要它在php代码中,以便在会话中设置 有人能解释一下如何替换吗?preg\u replace('/www.example.com\/(.+)\/index.php/i',“www.example.com/index.php?lang=$1',$url

嗨,据我所知,preg_replace可用于格式化字符串,但 在这方面我需要帮助 我的url将是这样的

www.example.com/en/index.php

我想要的是得到

结果是

www.example.com/index.php
我需要它在php代码中,以便在会话中设置


有人能解释一下如何替换吗?

preg\u replace('/www.example.com\/(.+)\/index.php/i',“www.example.com/index.php?lang=$1',$url)
会做这件事

preg\u replace('/www.example.com\/(.+)\/index.php/i',“www.example.com/index.php?lang=$1',$url)将完成此操作

这是一种方法:-

$newurl = preg_replace('/\/[a-z][a-z]\//', '/', $url);

请注意,搜索字符串显示时带有引号和正斜杠(“/…/”),并且URL中的正斜杠必须转义(\/)。然后将语言代码与“[a-z][a-z]”匹配,但还有其他几种方法可以实现这一点,如果有3个字母代码或大写字母,您可能需要更自由的代码。同样,您可能需要根据可能出现的其他URL方案做一些更严格的操作。

这是一种方法:-

$newurl = preg_replace('/\/[a-z][a-z]\//', '/', $url);

请注意,搜索字符串显示时带有引号和正斜杠(“/…/”),并且URL中的正斜杠必须转义(\/)。然后将语言代码与“[a-z][a-z]”匹配,但还有其他几种方法可以实现这一点,如果有3个字母代码或大写字母,您可能需要更自由的代码。同样地,您可能需要根据可能出现的其他URL方案做一些更严格的操作。

我怀疑在这种情况下,只需按以下方式使用会更快:

$cleanedData = str_replace(array('www.example.com/en/', 'www.example.com/fr/'), '', $sourceData);

我怀疑在这种情况下,仅使用以下方法会更快:

$cleanedData = str_replace(array('www.example.com/en/', 'www.example.com/fr/'), '', $sourceData);

多亏了Purpletoucan,我终于找到了一种方法

$newurl = preg_replace('/\/(en|esp|fr)\//', '/', $url);

我想它现在起作用了

多亏了Purpletoucan,我终于找到了一种方法

$newurl = preg_replace('/\/(en|esp|fr)\//', '/', $url);

我想它现在起作用了

为什么在那里使用括号?我想OP可能需要捕获的语言代码,所以我添加了捕获括号。当然,我应该更改代码以反映以后如何访问它。对不起,我忘记了分隔符。这是另一个问题,如果我有类似的事情要做什么?www.example.com/en/test1/page.php这不适用于此,因此,基本上您需要的是任何形式的
example.com/language/something/something/something/something
转换为
example.com/something/something/something
?您可以尝试
preg\u replace('/www.example.com\/(.*)\/i',“www.example.com/”,$url)为什么在那里使用括号?我想OP可能需要捕获的语言代码,所以我添加了捕获括号。当然,我应该更改代码以反映以后如何访问它。对不起,我忘记了分隔符。这是另一个问题,如果我有类似的事情要做什么?www.example.com/en/test1/page.php这不适用于此,因此,基本上您需要的是任何形式的
example.com/language/something/something/something/something
转换为
example.com/something/something/something
?您可以尝试
preg\u replace('/www.example.com\/(.*)\/i',“www.example.com/”,$url)抱歉,这里可能是www.example.com/esp/index.phpThanks用于解释+1抱歉,这里也可能是www.example.com/esp/index.phpThanks用于解释+1