2011-01-09 9 views
9

desidera elaborare un insieme di stringhe, e tagliare un po 'fine "myEnding" dalla fine di ogni stringa se esiste.PHP: il metodo migliore per tagliare una sottostringa da una stringa

Qual è il modo più semplice per farlo? So che tutto è possibile con regexp, ma sembra essere un compito semplice, e mi chiedo se esiste uno strumento più semplice per questo.

Grazie

Gidi

+0

È possibile trovare ['s ($ str) -> replaceSuffix ('myEnd ing ') '] (https://github.com/delight-im/PHP-Str/blob/ea3e40132e9d4ce27da337dae6286f2478b15f56/src/Str.php#L442) utile, come si trova in [questa libreria standalone] (https: // github .com/delizia-im/PHP-Str). – caw

risposta

8

ima andare con preg_replace su questo.

$output = preg_replace('/myEnding$/s', '', $input); 
+0

Serbatoi per la preziosa risposta, anche se ho chiesto soluzioni senza regexp – shealtiel

+1

hai chiesto il modo più semplice per farlo. in questo caso, regex era il modo più semplice. – dqhendricks

+0

sì, ti ho votato – shealtiel

5

provare questo:

$s = "foobarmyEnding"; 
$toRemove = "myEnding"; 

$len = strlen($toRemove); 
if (strcmp(substr($s, -$len, $len), $toRemove) === 0) 
{ 
    $s = substr($s, 0, -$len); 
} 

ideone

-3

rtrimhttp://php.net/manual/en/function.rtrim.php

$str = "foobarmyEnding"; 
$str = rtrim($str, 'myEnding'); 
// str == "foobar" 

ltrim è lo stesso accordo per l'avvio di una stringa http://php.net/manual/en/function.ltrim.php

Si potrebbe anche usare str_replace per sostituire un termine di ricerca con con una stringa vuota, ma la sua più lenta quindi rtrim/ltrim se è necessario modificare l'inizio o la fine di una stringa

+2

Non proprio. Il secondo parametro di 'rtrim' è un elenco di caratteri da rimuovere. Non è gestito come un'intera stringa. – TaZ

+0

La domanda era "tagliare qualche finale" myEnding "dalla fine di ogni stringa" –

+7

Se la stringa contiene uno di quei caratteri direttamente prima di "myEnding", anche questi verranno eliminati. Lasciatemi fare un esempio: cosa succede quando inserisci "HelloMikeShermanmyEnding". Ci si aspetterebbe che l'output fosse "HelloMikeSherman" ma l'output sarà "HelloMikeSherma"! Perché "n" fa parte dell'elenco dei caratteri fornito a 'rtrim'. – TaZ

Problemi correlati