Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz TomyLeeBoy #15699 üzenetére

    Két probléma van:
    1. sprintf()-et használsz, ami UTF-8-as karakterekre nem működik megfelelően
    2. a regexpben az "u" modifiert kellene használnod:
    http://php.net/manual/en/reference.pcre.pattern.modifiers.php
    "u (PCRE_UTF8)
    This modifier turns on additional functionality of PCRE that is incompatible with Perl. Pattern strings are treated as UTF-8. This modifier is available from PHP 4.1.0 or greater on Unix and from PHP 4.2.3 on win32. UTF-8 validity of the pattern is checked since PHP 4.3.5."

    Röviden a megoldás: a külön $pattern változó helyett a cikluson belül így nézzen ki a $regex változód, hogy egyből be is helyettesíted az értéket, így kikerülöd az sprintf() használatát:

    $regex = '/(?!<.*?)('.$needle_s.')(?![^<>]*?>)/iu';

    Így már működni fog. (Ugyanazt csinálja, mint a korábbi kódod, csak össze van fűzve a string a %s behelyettesítése helyett, és elláttam az u modifierrel (lásd a case insensitivity-t jelölő i modifier után).)

    Még egy fontos dolog: a font tageket ma már nem használjuk (nagyon régóta deprecated), szóval azt cseréld le span-re, és ugyanúgy működni fog. :)

Új hozzászólás Aktív témák