2010-12-15 14 views
2

Entfernen Hey, ich brauche einen Teil einer Zeichenfolge zu löschen (Ich bin nicht ein:PHP einen Teilstring aus einem String

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

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

Ich brauche das „$ code = XXXXX“ Teil (die XXXXX löschen Teil ist variabel)

ich habe versucht, dies mit:

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

aber nicht funktioniert ...

Wie kann ich dieses Problem lösen

Danke !!!

Antwort

4

Es gibt wohl eine einfachere/schnellere Methode, die regex ist aber diese Methode ist sicher (richtig analysiert parse_str sorgt für die Query-String ist) beinhaltet.

$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 für parse_str: http://www.php.net/manual/en/function.parse-str.php

0

Sollte nicht "/&scode=[^a-z]*/" mehr wie "/&scode=[a-zA-Z0-9]*/" sein?

0

Dies funktionieren würde, ohne einen regulären Ausdruck:

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

Nur wenn es nur drei Parameter gibt. –

0
preg_replace("/code=[a-zA-Z0-9]*/", "code=", $content); 
0
$content = preg_replace("|&scode=[a-zA-Z0-9]+&|", '&', $content); 
1

Sie diese Zeile versuchen sollte:

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

Es sagt etwas zu entfernen, die mit &scode beginnt, die von einer beliebigen Anzahl von Kleinbuchstaben folgt , Großbuchstaben oder Zahlen.

In Ihrem ursprünglichen Code verwendeten Sie [^a-z]*. Die ^ in Ihrer Zeichenliste sagte zu nicht passen auf Kleinbuchstaben, so würde es aufhören, Inhalt zu ersetzen, sobald es einen Kleinbuchstaben sah. Im Grunde genommen würde Ihre Regex nur Zahlen entfernen, die einen Code gestartet haben, aber nichts anderes im Code entfernen, wenn es ein Kleinbuchstabe enthält.

Mein Regex oben ist eine umfassende Liste, die besagt, dass alles, was auf der Liste steht, entfernt wird, so dass jedes alphanumerische Zeichen entfernt wird.

Hoffe, dass hilft.

+0

Danke, aber wenn das letzte Zeichen der Teilzeichenfolge ein alphanumerisches wie $ content = "user = predator1 & scode = mau4" ist (und nicht das & eines anderen Parameters), wie kann ich den regulären Ausdruck einrichten, um diese Option zu verwalten? – Gabriele

+0

@Gabriele: Ich bin mir nicht sicher, was du fragst. Die Regex in meiner Antwort stimmt mit dieser Zeichenfolge überein. – AgentConundrum

+0

@Gabriele: Meinst du "was ist, wenn' scode' die * erste * Variable ist, und deshalb * kein * '' 'hat? Das kannst du ziemlich leicht machen. Wenn du das meinst, lass mich wissen und ich werde meine Antwort aktualisieren. – AgentConundrum

Verwandte Themen