2010-12-15 2 views
2

Эй, мне нужно, чтобы удалить часть строки (я не:PHP удаление подстроки из строки

$content = "user=predator1&scode=mau4&athleteid=17007"; 

$content = "user=predator1&athleteid=17007"; 

Мне нужно удалить «$ код = XXXXX» часть (XXXXX часть переменной)

Я попытался использовать это:

$content = preg_replace("/&scode=[^a-z]*/", "", $content); 

, но не работает ...

Как я могу решить эту проблему

спасибо !!!

ответ

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); 

Docs для parse_str: http://www.php.net/manual/en/function.parse-str.php

0

Не следует "/&scode=[^a-z]*/" больше похож на "/&scode=[a-zA-Z0-9]*/"?

0

Это будет работать без использования регулярных выражений:

$pre = "user=predator1&scode=mau4&athleteid=17007"; 
$exp = explode('&', $pre); 
$content = implode('&', array($exp[0], $exp[2])); 
+0

Только при наличии только трех параметров. – 2010-12-15 23:40:05

1

Вы должны попробовать эту строку:

$content = preg_replace("/&scode=[a-zA-Z0-9]*/", "", $content); 

Он говорит, чтобы удалить все, что начинается с &scode, за которым следует любое количество строчной буквы , заглавные буквы или цифры.

В вашем исходном коде вы использовали [^a-z]*. ^ в вашем списке персонажей говорит не соответствует любым строчным буквам, поэтому он перестанет заменять содержимое, как только он увидит строчную букву. В основном, ваше регулярное выражение удаляло бы только числа, которые запускали код, но не удаляли бы что-либо еще в коде, если бы он включал строчный символ.

Мое регулярное выражение - это список включительно, говорящий удалить все, что есть в списке, поэтому оно удалит любой буквенно-цифровой символ.

Надеюсь, что это поможет.

+0

Спасибо, но если последний символ подстроки является буквенно-цифровым, например $ content = «user = predator1 & scode = mau4» (а не «и другого параметра»), как настроить регулярное выражение для управления этим параметром? – Gabriele 2010-12-16 11:08:08