2010-02-03 17 views
100

Come tagliare una parte di una stringa e salvarla in una stringa particolare in MySQL usando PHP?Come rimuovere una parte di una stringa?

stringa Esempio: "REGISTER 11223344 here"

Come posso rimuovere "11223344" dall'esempio stringa?

+0

Quale linguaggio di programmazione è questo? –

+23

dice PHP nel post. –

+1

@siddharth - quale output vuoi? –

risposta

19

assumendo 11223344 non è costante

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

Questo gli porterà '11223344', che è (penso) l'inverso di ciò che vuole. –

+1

Come mai? Disattiva l'indice della matrice che * contiene * "11223344". –

+1

ho apportato le modifiche dopo i commenti di Dominic. – ghostdog74

131

Se stai specificamente rivolte a "11223344", quindi utilizzare str_replace:

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

Effettuare le seguenti

$string = 'REGISTER 11223344 here'; 

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

Questo sarebbe tornato "REGISTERhere"

o

$string = 'REGISTER 11223344 here'; 

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

Questa ritornerebbe "registrarsi qui"

+3

Non restituisce "REGISTER__here", con due spazi vuoti (pensare sottolineatura come spazi, il commento non mi consentirà due spazi successivi)? Beacuse degli spazi prima e dopo "(. *)". – TechNyquist

5

substr() è una funzione built-in php che restituisce parte di una stringa. La funzione substr() prenderà una stringa come input, la forma di indice in cui si desidera ritagliare la stringa. e un parametro facoltativo è la lunghezza della sottostringa. Si può vedere una corretta documentazione e codice di esempio su http://php.net/manual/en/function.substr.php

NOTA: indice per una stringa inizia con 0.

78

È possibile utilizzare str_replace(), che è definito come:

str_replace($search, $replace, $subject) 

Così si potrebbe scrivere il codice come:

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

Se avete bisogno di una migliore corrispondenza con le espressioni regolari è possibile utilizzare preg_replace().

+1

Se si ha bisogno di regex matching c'è anche preg_replace() http://us2.php.net/manual/en/function.preg-replace.php –

5

Quando avete bisogno di regola corrispondente base, è necessario utilizzare regex

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

che abbinerà la prima serie di numeri, quindi se avete bisogno di essere prova più specifica:

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

preg_replace() sarebbe molto più semplice no? http://us2.php.net/manual/en/function.preg-replace.php –

+0

@ElijahLynn replace richiede la rimozione di cose, i cambiamenti futuri o il rumore si interromperanno. Facendo questo tramite _replace ma _match continuerebbe a funzionare. – TravisO

-1

se vuoi rimuovere la parte della stringa dalla stringa data questo potrebbe aiutarti

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

'chop' è un alias di' rtrim', che non lo fa - vedi http://php.net/rtrim. –

+0

Sì, questo non funzionerà. str_replace() è probabilmente più pulito. http://stackoverflow.com/a/2192329/292408 –

0

Puoi farlo anche tu, se ti piacciono altri modi ...

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

dinamico, se si desidera rimuovere una parte (s) da un indice fisso (es) di una stringa, utilizzare questa funzione:

/* 
* 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); 
} 

per il vostro scopo:

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

Uno dei suoi usi è quello di eseguire comandi, che conoscete la sua struttura.

Problemi correlati