Qualcuno sa di un modo molto veloce per sostituire l'ultima occorrenza di una stringa con un'altra stringa in una stringa?PHP Sostituisce l'ultima occorrenza di una stringa in una stringa?
risposta
È possibile utilizzare questa funzione:
function str_lreplace($search, $replace, $subject)
{
$pos = strrpos($subject, $search);
if($pos !== false)
{
$subject = substr_replace($subject, $replace, $pos, strlen($search));
}
return $subject;
}
Per motivi di sicurezza, aggiungerei un controllo per confermare che 'strrpos' non restituisce false, ma altrimenti OK. – Wrikken
Sì, hai ragione. Aggiornerò la mia risposta – Mischa
Questo ritornava ancora vero, non importa cosa.Considera di modificarlo: if ($ pos) { $ subject = substr_replace ($ subject, $ replace, $ pos, strlen ($ search)); \t return $ subject; } altro { \t reso falso; } – Jazzy
Questo funziona anche:
function str_lreplace($search, $replace, $subject)
{
return preg_replace('~(.*)' . preg_quote($search, '~') . '(.*?)~', '$1' . $replace . '$2', $subject, 1);
}
UPDATE versione leggermente più concisa (http://ideone.com/B8i4o):
function str_lreplace($search, $replace, $subject)
{
return preg_replace('~(.*)' . preg_quote($search, '~') . '~', '$1' . $replace, $subject, 1);
}
Sto sbagliando? Se è così, ignorami :) ||| echo str_lreplace ("x", "y", "questo xo quella x"); => Output: "y" Vedi: http://www.ideone.com/UXuTo – edorian
@edorian: Oops! Scusa, l'ho postata in fretta, la versione corretta è qui: http://ideone.com/vR073. –
$string = 'this is my world, not my world';
$find = 'world';
$replace = 'farm';
$result = preg_replace(strrev("/$find/"),strrev($replace),strrev($string),1);
echo strrev($result); //output: this is my world, not my farm
Un altro 1-liner, ma senza preg:
$subject = 'bourbon, scotch, beer';
$search = ',';
$replace = ', and';
echo strrev(implode(strrev($replace), explode(strrev($search), strrev($subject), 2))); //output: bourbon, scotch, and beer
Sarebbe divertente vedere qualcuno confrontarlo con il preg –
FWIW, la soluzione accettata è circa il 35% più veloce di questa soluzione. – JustCarty
utilizzare il "$", a un'espressione reg per abbinare la fine della stringa
$string = 'The quick brown fox jumps over the lazy fox';
echo preg_replace('/fox$/', 'dog', $string);
//output
'The quick brown fox jumps over the lazy dog'
La seguente soluzione piuttosto compatto utilizza il PCRE positive lookahead assertion per abbinare l'ultima occorrenza della sottostringa di interesse, ovvero un'occorrenza della sottostringa che non è seguita da altre occorrenze della stessa sottostringa. Pertanto, l'esempio sostituisce last 'fox'
con 'dog'
.
$string = 'The quick brown fox, fox, fox jumps over the lazy fox!!!';
echo preg_replace('/(fox(?=.*fox.*))/', 'dog', $string);
USCITA:
The quick brown fox, fox, fox jumps over the lazy dog!!!
sembra non funzionare – Ivan
L'idea è buona, ma il codice non lo è. Deve essere: '$ string = 'La volpe marrone veloce, la volpe, la volpe salta sopra la volpe pigra !!!'; echo preg_replace ('/ (fox (?!. * Fox)) /', 'dog', $ stringa); ' – Roemer
In effetti, il codice che ho postato cambia tutte le istanze di" volpe "tranne l'ultima a "cane", ma ciò che vogliamo è esattamente l'opposto. Grazie per aver sottolineato che la sostituzione? = Con?! risolve il problema –
una sola riga di codice (risposta in ritardo, ma vale la pena di aggiungerlo):
$string = 'The quick brown fox jumps over the lazy dog';
$find_me = 'dog';
preg_replace('/'. $find_me .'$/', '', $string);
il finale $ indica la fine della stringa.
Si potrebbe fare questo:
$str = 'Hello world';
$str = rtrim($str, 'world') . 'John';
Il risultato è 'Ciao Giovanni';
saluti
Questo funziona fintanto che non ci sono caratteri ripetuti. Nella mia situazione sto spogliando il numero della pagina dalla data dell'archivio, quindi ho "2015-12/2" e ci sono tutti/e tutti e 2 gli altri che diventano "2015-1". – Mike
È possibile utilizzare strrpos() per trovare ultima partita.
$string = "picture_0007_value";
$findChar =strrpos($string,"_");
$string[$findChar]=".";
echo $string;
uscita: picture_0007.value
$string = "picture_0007_value";
$findChar =strrpos($string,"_");
if($findChar !== FALSE) {
$string[$findChar]=".";
}
echo $string;
A parte gli errori nel codice, Faruk Unal ha il miglior anwser. Una funzione fa il trucco.
È necessario controllare, se ** $ findChar ** non è falso (come nella risposta accettata). Se la stringa non contiene una stringa cercata, viene visualizzato un avviso e il primo carattere verrà sostituito. – shaggy
- 1. Sostituisce la prima occorrenza di stringa in Python
- 2. Sostituisce una stringa con un'altra stringa
- 3. VBA trova l'ultima occorrenza di una stringa
- 4. JavaScript: sostituire ultima occorrenza di testo in una stringa
- 5. Trova l'indice dell'ultima occorrenza di una sottostringa in una stringa
- 6. Sostituzione di una singola occorrenza di stringa Obj-c
- 7. Come dividere una stringa all'ennesima occorrenza?
- 8. Come trovare l'ennesima occorrenza di carattere in una stringa?
- 9. Trova la nonna occorrenza di un carattere in una stringa
- 10. rreplace - Come sostituire l'ultima occorrenza di un'espressione in una stringa?
- 11. RegEx che abbinerà l'ultima occorrenza di punti in una stringa
- 12. Sostituire ultima occorrenza di un carattere in una stringa
- 13. Come sostituire una stringa in una stringa ad eccezione della prima occorrenza
- 14. Restituisce la parte di una stringa prima della prima occorrenza di un carattere in php
- 15. Sostituisce la sottostringa in una stringa con intervallo in JavaScript
- 16. Regex per abbinare la prima occorrenza di una stringa
- 17. formato una stringa di data in PHP
- 18. Come posso dividere una stringa alla prima occorrenza di "-" (segno meno) in due $ vars con PHP?
- 19. PHP rimuovere caratteri dopo l'ultimo occorrenza di un carattere in una stringa
- 20. PHP costruisce una stringa Unicode?
- 21. javascript - stringa sostituisce
- 22. Per sostituire, ma l'ultima occorrenza di stringa in un testo
- 23. PHP Abbina una stringa esattamente
- 24. Trovare la seconda occorrenza di una sottostringa in una stringa in Java
- 25. Come incrementare una stringa alfanumerica in PHP?
- 26. Come troncare una stringa UTF8 in PHP?
- 27. Catturare l'HTML su una stringa in PHP
- 28. Inserire il codice PHP in una stringa
- 29. In PHP, cos'è una stringa binaria (b'xxxx ')?
- 30. scambia due parole in una stringa php
È possibile trovare ['s ($ str) -> replaceLast ($ search, $ replace)'] (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str. php # L305) utile, come trovato in [questa libreria standalone] (https://github.com/delight-im/PHP-Str). – caw