嘿,我需要删除字符串的一部分(我不是:
$content = "user=predator1&scode=mau4&athleteid=17007";
$content = "user=predator1&athleteid=17007";
我需要删除“$ code = XXXXX”部分(XXXXX部分是可变的)
我尝试过使用它:
$content = preg_replace("/&scode=[^a-z]*/", "", $content);
但不起作用......
我该如何解决这个问题?
谢谢!!!
答案 0 :(得分:4)
可能有一个更简单/更快的方法涉及正则表达式,但此方法是安全的(parse_str
可确保正确解析查询字符串。)
$content = "user=predator1&scode=mau4&athleteid=17007";
parse_str($content, $vars);
if (isset($vars['code']))
{
unset($vars['code']);
}
$content = http_build_query($vars);
var_dump($content);
parse_str
的文档:http://www.php.net/manual/en/function.parse-str.php
答案 1 :(得分:1)
你应该尝试这一行:
$content = preg_replace("/&scode=[a-zA-Z0-9]*/", "", $content);
它表示删除任何以&scode
开头的内容,后跟任意数量的小写字母,大写字母或数字。
在原始代码中,您使用的是[^a-z]*
。您的角色列表中的^
表示不匹配任何小写字母,因此只要看到小写字母就会停止替换内容。基本上,你的正则表达式只删除启动代码的数字,但如果包含小写字符,则不会删除代码中的任何其他内容。
上面我的正则表达式是一个包含列表,说删除列表中的任何内容,因此它将删除任何字母数字字符。
希望有所帮助。
答案 2 :(得分:0)
"/&scode=[^a-z]*/"
不应该更像"/&scode=[a-zA-Z0-9]*/"
吗?
答案 3 :(得分:0)
这可以在不使用正则表达式的情况下工作:
$pre = "user=predator1&scode=mau4&athleteid=17007";
$exp = explode('&', $pre);
$content = implode('&', array($exp[0], $exp[2]));
答案 4 :(得分:0)
preg_replace("/code=[a-zA-Z0-9]*/", "code=", $content);
答案 5 :(得分:0)
$content = preg_replace("|&scode=[a-zA-Z0-9]+&|", '&', $content);