Zahlen fett darstellen

Soapp

Erfahrenes Mitglied
3 oder mehr zahlen

170958590
170958689
170958789

wie krieg ich das in php hin, dass der Teil der gleich ist fett wird .. ?

Momentan stehen die Zahlen in einem String

Danke
 
German hat gesagt.:
PHP:
echo $str_replace('170958','<B>170958</B>',$string);

Danke :)
Das Problem ist aber, und jetzt wirds lustig, dass sich die Zahlen immer ändern :(
Ich müsste also eine Funktion finden die mir die zahlen vergleicht und nur immer den Teil fett markiert, der gleich ist.

Unlösbar, oder ?
 
Soapp hat gesagt.:
Das Problem ist aber, und jetzt wirds lustig, dass sich die Zahlen immer ändern :(
Dacht ich mir fast ;)
Ich müsste also eine Funktion finden die mir die zahlen vergleicht und nur immer den Teil fett markiert, der gleich ist.

Unlösbar, oder ?
Nicht unbedingt, das hängt vor allem davon ab ob es einen Delimiter gibt an dem man Anfang und Ende der Zahlen festmachen kann, was sonst noch so in dem String steht, ob es eine feste Anzahl Zahlen sind usw.

Stünden z.B. nur die Zahlen mit Zeilenumbruch getrennt in dem String könntest du sie mit
PHP:
$strArr = explode ('\n', $string)
in ein Array einlesen und dessen Elemente dann Zeichen für Zeichen miteinander vergleichen bis eine Abweichung auftaucht ...
 
German hat gesagt.:
Dacht ich mir fast ;)

Nicht unbedingt, das hängt vor allem davon ab ob es einen Delimiter gibt an dem man Anfang und Ende der Zahlen festmachen kann, was sonst noch so in dem String steht, ob es eine feste Anzahl Zahlen sind usw.

Stünden z.B. nur die Zahlen mit Zeilenumbruch getrennt in dem String könntest du sie mit
PHP:
$strArr = explode ('\n', $string)
in ein Array einlesen und dessen Elemente dann Zeichen für Zeichen miteinander vergleichen bis eine Abweichung auftaucht ...


das mit dem Array ist gut ...
ich hab jetzt also alle Zahlen in einem Array ..
und wie vergleiche ich die ?
 
Vielleicht nicht sehr elegant...
PHP:
function abfetten($str)
{
  preg_match_all('@\d+@', $str, $arr);
  $out = $str;
  for($i = 1; $i < strlen($arr[0][0]); ++$i)
    {
      $pattern = '@\b('.substr($arr[0][0], 0, $i).')@';
      if(count(preg_grep($pattern, $arr[0])) == count($arr[0]))
        {
          $out = preg_replace($pattern, "<b>\\1</b>", $str);
        }
    }
  return $out;
}

....habs mit RegExp gemacht, ich schätze mal, preg_grep() dürfte in dem Fall die schnellste Methode sein.

Der Lernfaktor ist aber mal wieder futsch...Fehler sind bestimmt auch noch auffindbar :-)
 
Sven Mintel hat gesagt.:
Vielleicht nicht sehr elegant...
PHP:
function abfetten($str)
{
  preg_match_all('@\d+@', $str, $arr);
  $out = $str;
  for($i = 1; $i < strlen($arr[0][0]); ++$i)
    {
      $pattern = '@\b('.substr($arr[0][0], 0, $i).')@';
      if(count(preg_grep($pattern, $arr[0])) != count($arr[0][0]))
        {
          $out = preg_replace($pattern, "<b>\\1</b>", $str);
        }
    }
  return $out;
}

....habs mit RegExp gemacht, ich schätze mal, preg_grep() dürfte in dem Fall die schnellste Methode sein.

Der Lernfaktor ist aber mal wieder futsch :-(



Wie zieht ihr euch das bloss aus eurem gehirn raus ?
\d+ findet alle Zahlen, aber was macht das @ ?

Mein Gehirn hat gerade einen Aussetzer .. was ist denn $arr ?

Danke !
 
Zuletzt bearbeitet:
Das @ ist der Begrenzer des Ausdrucks.... von mir Aus kannst du da auch ein Slash oder sonstetwas nehmen(was im Ausdruck selbst nicht vorkommt)....das @ spielt somit keine spezielle Rolle.


<edit>
In dem Code war erwartungsgemäss ein Fehler... hab ihn geändert.
Kopier ihn am Besten nochmal neu, falls du ihn schon hattest ;)
</edit>
 
Ich würde sagen das ist der 'Delimiter' des 'RegEx-Patterns'? 'Normalerweise' (es gibt keinen Standardsymbol in PHP) siehts z.b. so "/\d+/i" aus.

Gruß
the.irresponer

Edit: Damn, da war jemand ne Minute schneller ;-)
 
Sven Mintel hat gesagt.:
Das @ ist der Begrenzer des Ausdrucks.... von mir Aus kannst du da auch ein Slash oder sonstetwas nehmen(was im Ausdruck selbst nicht vorkommt)....das @ spielt somit keine spezielle Rolle.


<edit>
In dem Code war erwartungsgemäss ein Fehler... hab ihn geändert.
Kopier ihn am Besten nochmal neu, falls du ihn schon hattest ;)
</edit>


Für einen ganz DUMMEN bitte noch eine Frage: was ist $arr ? :confused:

ach, verstehe ... Mein Gehirn arbeitet wieder .. habs verstanden
 
Zuletzt bearbeitet:
Zurück