Autor Zpráva
user243
Profil
Ahoj,
mohl by mi někdo poradit, jak přepsat funkci preg_replace_callback() do javascriptu? Zkoušel jsem místo pole se shodami použít jednotlivé shody, také jen dolar s číslem, ale nic z toho nebylo. Nakonec jsem zkusil console.log() s nějakým textem zavolat v té nahrazovací funkci, ale v konzoli se nic nevypsalo.
Díky za pomoc.

původní funkce v php:
$zprava = preg_replace_callback("/\[url=(.+?)\](.+?)\[\/url]/s", 
            function($matches) {
              return '<a href="'.$matches[1].'" target="_blank" title="' 
              . (strlen($matches[2]) > 29 ? $matches[2] : '') . '">' 
              . (strlen($matches[2]) > 29 ? substr($matches[2], 0, 26).'&hellip;' : $matches[2]) 
              . '</a>';
            }, $zprava); 
upravená v js:
zprava = zprava.replace("/\[url=(.+?)\](.+?)\[\/url]/g", 
            function(matches) {
              console.log("dfgdfg");
              return '<a href="'+ matches[1] + '" target="_blank" title="' 
              + (matches[2].length > 29 ? matches[2] : '') + '">' 
              + (matches[2].length > 29 ? matches[2].substr(0, 26) + '&hellip;' : matches[2]) 
              + '</a>';
            });
Tori
Profil
user243:
Zřejmě špatné parametry u callback funkce, nedostává pole jako v PHP: manuál
_es
Profil
user243:
Okrem toho, regulárne výrazy sa v JS píšu bez úvodzoviek a začínajú lomítkom, teda
zprava = zprava.replace(/\[url=(.+?)\](.+?)\[\/url]/g,...
user243
Profil
Do toho manuálu jsem se včera dlouho díval, ale pořád mi to nešlo. Ráno jsem si všiml, že se tam právě nepoužívají ty uvozovky. Takže po menší úpravě všechno šlape jak má.
Díky za pomoc.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: