str_ireplace() unter Beibehaltung der Groß-/Kleinschreibung

Lesezeit: 2 Minuten

Benutzer-Avatar
Francisc

Wie kann ich str_ireplace (oder etwas Ähnliches) verwenden, um Text für die Formatierung zu ersetzen und ihn dann mit denselben Großbuchstaben zurückzugeben?

Beispiel:

$original="The quick red fox jumps over the lazy brown dog.";
$find="thE";

print str_ireplace($find,'<b>'.$find.'</b>',$original);

Das wird ausgeben:
das schneller Rotfuchs springt über den faulen braunen Hund.

Ich möchte, dass der ursprüngliche Fall beibehalten wird und nur die Formatierung angewendet wird, in diesem Beispiel fetter Text.

Vielen Dank.

$original = "The quick red fox jumps over the lazy brown dog.";
$new = preg_replace("/the/i", "<b>\$0</b>", $original);

gibt “Das schneller Rotfuchs springt rüber das fauler brauner Hund.” Wenn Sie bestimmte Wörter abgleichen möchten, können Sie Wortgrenzen hinzufügen: preg_replace('/\bthe\b/i', ....

Wenn Sie den Ersatz parametrisieren möchten, können Sie verwenden preg_quote:

 preg_replace('/\b' . preg_quote($word, "https://stackoverflow.com/") . '\b/i', "<b>\$0</b>", $original);

  • *Der schnelle braune Fuchs springt über den faulen Hund

    – Popnudeln

    2. April 2014 um 1:18 Uhr

  • Hinzufügen u Modifikator für UTF-8-Unterstützung

    – Arthur Shlain

    6. April 2021 um 15:15 Uhr

Entweder durch das genaue Wort ersetzen oder preg_replace verwenden:

preg_replace('/(The)/i', "<strong>$1</strong>", $original);

Benutzer-Avatar
Ken Lee

Ich habe eine alternative Lösung geschrieben (eine Funktion, die eine reine Zeichenfolgenersetzung verwendet), um die Aufgabe zu erledigen, mit der Sie das Präfix und Suffix (zur Hervorhebung) einfach festlegen können:

function replace_keep_case($st1, $find1) {

/// set prefix and suffix here
$prefix="<span style="color:red;"><b>";
$suffix="</b></span>";

$index=0;
$resultstring="";
   while ($index < strlen($st1)) {
      if (strtoupper(substr($st1, $index, strlen($find1)))==strtoupper($find1)) {
        $resultstring.=$prefix.substr($st1, $index, strlen($find1)). $suffix;
        $index=$index+strlen($find1); 
      } else {
        $resultstring.=substr($st1, $index, 1);
        $index++;
      }
    }
   return $resultstring; 
}

Zum Beispiel:

$text="CHICHiOn Ichiro's Malt & Grain (Limited Edition) 700ml 48% CONDITION";

$findstring="ion";

echo replace_keep_case($text, $findstring);

1227710cookie-checkstr_ireplace() unter Beibehaltung der Groß-/Kleinschreibung

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy