2010-02-03 19 views
100

Wie trimmen Sie einen Teil eines Strings und speichern Sie ihn in einer bestimmten Zeichenfolge in MySQL mit PHP?Wie wird ein Teil einer Zeichenkette entfernt?

Beispiel string: "REGISTER 11223344 here"

Wie kann ich "11223344" aus Beispiel String entfernen?

+0

Welche Programmiersprache ist das? –

+23

sagt PHP in der Post. –

+1

@siddharth - welche Ausgabe möchten Sie? –

Antwort

19

11223344 unter der Annahme nicht konstant

$string="REGISTER 11223344 here"; 
$s = explode(" ",$string); 
unset($s[1]); 
$s = implode(" ",$s); 
print "$s\n"; 
+1

Das wird ihm '11223344', was (ich glaube) die Umkehrung dessen, was er will. –

+1

Wie? Er deaktiviert den Array-Index, der * "11223344" enthält. –

+1

Ich habe die Anpassungen nach Dominicos Kommentaren vorgenommen. – ghostdog74

131

Wenn Sie speziell "11223344" Targeting, dann str_replace verwenden:

echo str_replace("11223344", "", "REGISTER 11223344 here"); 
14

Gehen Sie wie folgt

$string = 'REGISTER 11223344 here'; 

$content = preg_replace('/REGISTER(.*)here/','',$string); 

Dies würde zurückkehren "REGISTERhier"

oder

$string = 'REGISTER 11223344 here'; 

$content = preg_replace('/REGISTER (.*) here/','',$string); 

Dies würde zurückkehren "Hier registrieren"

+3

Würde es nicht "REGISTER__hier" zurückgeben, mit zwei Leerzeichen (denke Unterstrich als Leerzeichen, Kommentar erlaubt mir nicht zwei nachfolgende Leerzeichen)? Wegen der Leerzeichen vor und nach dem "(. *)". – TechNyquist

5

substr() ist eine integrierte PHP-Funktion, die einen Teil eines Strings zurück. Die Funktion substr() nimmt eine Zeichenfolge als Eingabe, die Indexform, wo die Zeichenfolge getrimmt werden soll. und ein optionaler Parameter ist die Länge der Teilkette. Sie können eine ordnungsgemäße Dokumentation und Beispielcode siehe http://php.net/manual/en/function.substr.php

HINWEIS: Index für eine Zeichenfolge beginnt mit 0.

78

Sie str_replace() verwenden können, die wie folgt definiert ist:

str_replace($search, $replace, $subject) 

Sie das schreibe, Code wie:

$subject = 'REGISTER 11223344 here' ; 
$search = '11223344' ; 
$trimmed = str_replace($search, '', $subject) ; 
echo $trimmed ; 

Wenn Sie eine bessere Abstimmung über reguläre Ausdrücke benötigen, können Sie preg_replace() verwenden.

+1

Wenn man Regex Matching benötigt, gibt es auch preg_replace() http://us2.php.net/manual/en/function.preg-replace.php –

5

Wenn Sie entscheiden müssen basiertes Matching, müssen Sie regex verwenden

$string = "REGISTER 11223344 here"; 
preg_match("/(\d+)/", $string, $match); 
$number = $match[1]; 

, dass der erste Satz von Zahlen übereinstimmen, wenn Sie also speziellere Versuch sein müssen:

$string = "REGISTER 11223344 here"; 
preg_match("/REGISTER (\d+) here/", $string, $match); 
$number = $match[1]; 
+0

preg_replace() wäre viel einfacher, nicht wahr? http://us2.php.net/manual/en/function.preg-replace.php –

+0

@ElijahLynn ersetzen müssen Sie Dinge entfernen, zukünftige Änderungen oder Rauschen würde brechen. Dies über _replace aber _match zu tun, würde weiterhin funktionieren. – TravisO

-1

wenn Sie möchten den Teil der Zeichenkette von der gegebenen Zeichenkette entfernen das könnte Ihnen helfen

chop($string,'part_of_string'); 
+4

'chop' ist ein Alias ​​von' rtrim', was das nicht tut - siehe http://php.net/trrim. –

+0

Ja, das wird nicht funktionieren. str_replace() ist wahrscheinlich am saubersten. http://stackoverflow.com/a/2192329/292408 –

0

Sie könnten dies auch tun, wenn Sie andere Wege mögen ...

function str_substract($remove, $subject){ 
    $strpos = strpos($subject, $remove); 
    return substr($subject, 0, $strpos) . substr($subject, $strpos + strlen($remove)); 
} 

$str = "Hello, world. This is amazing"; 
print str_substract('rld', $str); 

/* Outputs: */ 
"Hello, wo. This is amazing" 
0

Dynamisch, wenn Sie einen Teil (e) von einem festen Index (n) eines Strings entfernen möchten, verwenden Sie diese Funktion:

/* 
* Remove index/indexes from a string, delimited by a space (or something else). 
* First, divides the string by delimiter and holds divided parts as an array. 
* If $index is an array, it removes all indexes of the divided string; 
* otherwise (i.e. has an int value), it removes just that index of the string. 
* At last, it joins all string parts together and return it as a string. 
* Note: If you want to use this function in PHP5, remove scalar type hints 
* (i.e. keywords before function arguments). 
*/ 
function remove_from_str($index, string $str, string $delimiter = " "): string 
{ 
    // String parts 
    $strParts = explode($delimiter, $str); 

    // Remove indexes from string parts 
    if (is_array($index)) 
     foreach ($index as $i) 
      $strParts[(int)$i] = null; 
    else 
     $strParts[(int)$index] = null; 

    // Remove null values, to prevent duplicating delimiter 
    $strParts = array_filter($strParts); 

    // Join all parts together and return it 
    return implode($delimiter, $strParts); 
} 

Für Ihren Zweck:

remove_from_str(1, "REGISTER 11223344 here"); 
// Output: REGISTER here 

Eine seiner Nutzungen ist die Ausführung von Befehlen, deren Struktur Sie kennen.

Verwandte Themen