Problem mit regulärem Ausdruck
heinetz
- php
Hallo Forum,
ich steh' grad mal ziemlich auf dem Schlauch und kann mir
folgendes nicht erklären:
$mark_strA[$z] = "ärzt";
$string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";
echo preg_replace('/('.$mark_strA[$z].')/i', '<span class="s_result">${1}</span>', $string);
exit;
Ich würde folgende Ausgabe erwarten:
------------------------------------
Bei <span class="s_result">Ärzt</span>lichen Behandlungsfehlern stehen wir Ihnen zur Seite
Leider funktioniert das aus mir unerklärlichen Gründen nicht
mehr. Kann das in irgendeiner Form mit Zeichenkodierungen
zusammenhängen?
danke für Tipps und
beste gruesse,
heinetz
Hi,
$mark_strA[$z] = "ärzt";
$string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";
echo preg_replace('/('.$mark_strA[$z].')/i', '<span class="s_result">${1}</span>', $string);
exit;
>
> Ich würde folgende Ausgabe erwarten:
> ------------------------------------
> Bei <span class="s\_result">Ärzt</span>lichen Behandlungsfehlern stehen wir Ihnen zur Seite
>
> Leider funktioniert das aus mir unerklärlichen Gründen nicht
> mehr. Kann das in irgendeiner Form mit Zeichenkodierungen
> zusammenhängen?
Ja, tut es.
PHP „kann“ immer noch kein Unicode, sondern betrachtet darin mit mehreren Bytes repräsentierte Zeichen als mehrere Zeichen.
Und dem zu Folge ist der Modifier i hier in so fern wirkungslos, dass PHP nicht erkennen kann, dass Ä die „grosse“ Version von ä ist.
Nimm den Modifier u hinzu.
MfG ChrisB
--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
Hi,
Ja, tut es.
PHP „kann“ immer noch kein Unicode, sondern betrachtet darin mit mehreren Bytes repräsentierte Zeichen als mehrere Zeichen.
Und dem zu Folge ist der Modifier i hier in so fern wirkungslos, dass PHP nicht erkennen kann, dass Ä die „grosse“ Version von ä ist.
Ich habe nun herausgefunden, warum das bisher und jetzt nicht mehr
funktioniert. Ich habe früher 'ä' in 'Ärzte' gesucht und
bedingt durch das /i auch gefunden.
Nimm den Modifier u hinzu.
... was aber scheinbar voraussetzt, dass hier von utf8 die Rede
ist(?). Davon muss ich mich leider gerade erstmal verabschieden.
gibt's Alternativen?
beste gruesse,
heinetz
Hi,
was besseres ist mir nicht eingefallen, aber das hier tut
aufden ersten Blick was es soll:
$mark_strA[$z] = "ärzt";
$string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";
echo preg_replace('/('.$mark_strA[$z].')/i', '<span class="s_result">${1}</span>', $string);
exit;
~~~php
$mark_strA[$z] = "ärzt";
$string = "Bei Ärztlichen Behandlungsfehlern stehen wir Ihnen zur Seite";
echo utf8_decode(preg_replace('/('.utf8_encode($mark_strA[$z]).')/iu', '<span class="s_result">${1}</span>', utf8_encode($string)));
exit;
nicht schön, aber selten ;)
beste gruesse,
heinetz