Wer weiß von einem sehr schnellen Weg, das letzte Vorkommen eines Strings durch einen anderen String in einem String zu ersetzen?PHP Das letzte Vorkommen eines Strings in einem String ersetzen?
Antwort
Sie diese Funktion nutzen zu können:
function str_lreplace($search, $replace, $subject)
{
$pos = strrpos($subject, $search);
if($pos !== false)
{
$subject = substr_replace($subject, $replace, $pos, strlen($search));
}
return $subject;
}
Aus Sicherheitsgründen würde ich hinzufügen, dass 'strrpos' nicht falsch zurückgibt, aber ansonsten OK. – Wrikken
Ja, du hast Recht. Ich werde meine Antwort aktualisieren. – Mischa
Dies war immer noch wahr, egal was passiert.Überlegen Sie, ob Sie es ändern möchten: if ($ pos) { $ subject = substr_replace ($ subject, $ ersetzen, $ pos, strlen ($ search)); \t Rückgabe $ Betreff; } sonst { \t Rückgabe false; } – Jazzy
Dies wird auch funktionieren:
function str_lreplace($search, $replace, $subject)
{
return preg_replace('~(.*)' . preg_quote($search, '~') . '(.*?)~', '$1' . $replace . '$2', $subject, 1);
}
UPDATE Etwas mehr Kurzfassung (http://ideone.com/B8i4o):
function str_lreplace($search, $replace, $subject)
{
return preg_replace('~(.*)' . preg_quote($search, '~') . '~', '$1' . $replace, $subject, 1);
}
Mache ich es falsch? Wenn ja, ignorier mich einfach :) ||| echo str_lreplace ("x", "y", "dieses x oder das x"); => Ausgabe: "y" Siehe: http://www.ideone.com/UXuTo – edorian
@edorian: Ups! Entschuldigung, ich habe es in Eile gepostet, die richtige Version ist hier: 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
Ein weiterer 1-Liner aber ohne Preg:
$subject = 'bourbon, scotch, beer';
$search = ',';
$replace = ', and';
echo strrev(implode(strrev($replace), explode(strrev($search), strrev($subject), 2))); //output: bourbon, scotch, and beer
Wäre lustig zu sehen, jemand Benchmark dies gegen die Preg –
FWIW, die akzeptierte Lösung ist etwa 35% schneller als diese Lösung. – JustCarty
das „$“ auf einem reg Ausdruck Verwenden Sie das Ende der Schnur
$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'
Die folgende eher kompakte Lösung verwendet die PCRE positive lookahead assertion entsprechen anzupassen das letzte Vorkommen der interessierenden Teilzeichenfolge, dh ein Vorkommen der Teilzeichenfolge, auf das keine anderen Vorkommen derselben Teilzeichenfolge folgen. Somit ersetzt das Beispiel die last 'fox'
durch 'dog'
.
$string = 'The quick brown fox, fox, fox jumps over the lazy fox!!!';
echo preg_replace('/(fox(?=.*fox.*))/', 'dog', $string);
OUTPUT:
The quick brown fox, fox, fox jumps over the lazy dog!!!
scheint nicht funktioniert – Ivan
Die Idee ist gut, aber der Code ist nicht. Es muss sein: '$ string = 'Der schnelle braune Fuchs, Fuchs, Fuchs springt über den faulen Fuchs !!!'; echo preg_replace ('/ (fox (?!. * Fox)) /', 'Hund', $ string); ' – Roemer
Tatsächlich ändert der Code, den ich gepostet habe, alle Instanzen von" fox "mit Ausnahme des letzten "Hund", aber was wir wollen, ist genau das Gegenteil. Danke, dass du darauf hingewiesen hast, dass du? = Mit? behebt das Problem. –
nur eine Zeile Code (späte Antwort, aber es lohnt sich hinzugefügt werden):
$string = 'The quick brown fox jumps over the lazy dog';
$find_me = 'dog';
preg_replace('/'. $find_me .'$/', '', $string);
die Endung $ zeigt das Ende des Strings.
Sie können dies tun:
$str = 'Hello world';
$str = rtrim($str, 'world') . 'John';
Ergebnis ist 'Hallo John';
Grüße
Dies funktioniert, solange es keine wiederholten Zeichen gibt. In meiner Situation stripe ich die Seitenzahl vom Archivdatum ab, also habe ich "2015-12/2" und es dauert alle/und alle 2 am Ende werden "2015-1". – Mike
Sie strrpos() verwenden, können letztes Spiel zu finden.
$string = "picture_0007_value";
$findChar =strrpos($string,"_");
$string[$findChar]=".";
echo $string;
Ausgang: picture_0007.value
$string = "picture_0007_value";
$findChar =strrpos($string,"_");
if($findChar !== FALSE) {
$string[$findChar]=".";
}
echo $string;
Neben den Fehler im Code, Faruk Unal hat die beste anwser. Eine Funktion macht den Trick.
Sie müssen überprüfen, ob ** $ findChar ** nicht falsch ist (wie in der akzeptierten Antwort). Wenn die Zeichenfolge keine gesuchte Zeichenfolge enthält, erhalten Sie eine Benachrichtigung, und das erste Zeichen wird ersetzt. – shaggy
- 1. Ersetzen letzte Vorkommen eines Zeichens in einem String
- 2. JavaScript: ersetzen letzte Vorkommen von Text in einem String
- 3. das letzte Vorkommen eines Strings in Javascript Entfernen
- 4. Wie das letzte Vorkommen eines Wortes in Javascript ersetzen?
- 5. XSLT: Finding letzte Vorkommen in einem String
- 6. PHP preg_replace mit allen Vorkommen eines Strings zu ersetzen, außer
- 7. Ersetzen eines Satzes Strings in einem String unabhängig voneinander (parallel)
- 8. php - ersetzen Zeichenfolge Vorkommen
- 9. Ersetzen Sie alle Vorkommen eines Strings in JavaScript nicht
- 10. Finde das letzte Vorkommen eines Zeichens in der Zeichenkette Python
- 11. Ersetzen Sie alle Vorkommen eines String mit StringBuilder?
- 12. Ersetzen Sie das letzte Vorkommen von Speicherplatz durch sed
- 13. Oracle: Mehrere String-Vorkommen ersetzen
- 14. Wie wird das letzte Vorkommen einer Teilkette in Ruby ersetzt?
- 15. Das letzte Vorkommen eines Elements in einer Liste finden Python
- 16. Wie eine Zeichenkette in einem String außer ersten Vorkommen ersetzen
- 17. zu ersetzen, aber das letzte Vorkommen der Zeichenkette in einem Text
- 18. ersetzen nur die ersten drei Vorkommen mit PHP
- 19. das erste Vorkommen eines Elements in einer Liste Ersetzen
- 20. Scala: Entfernen Sie das letzte Vorkommen eines Zeichens
- 21. Ersetzen aller Vorkommen eines Musters in einer Zeichenfolge
- 22. String ersetzen in PHP
- 23. ersetzen letzten Vorkommen in Zeile
- 24. Mit preg_replace ersetzen alle Vorkommen in PHP
- 25. Zählen Vorkommen von Strings in einem Array
- 26. C++ mehrere Strings in einem String in einem einzigen Durchgang ersetzen
- 27. String ersetzen in php
- 28. Wie finde ich das letzte Wort in einem String sqlite3
- 29. Suche nach dem 2. Vorkommen eines Strings in VBA
- 30. Wie kann ich das erste und letzte Vorkommen eines Elements in einem data.frame finden?
Sie könnten ['s ($ str) -> replaceLast ($ suchen, $ ersetzen)'] finden (https://github.com/delight-im/PHP-Str/blob/8fd0c608d5496d43adaa899642c1cce047e076dc/src/Str. php # L305) hilfreich, wie in [diese eigenständige Bibliothek] (https://github.com/delight-im/PHP-Str) gefunden. – caw