Portál AbcLinuxu, 13. května 2025 22:43

Dotaz: preg_replace nahrazuje jen prvni vyskyt

18.2.2005 12:19 Wolf | skóre: 7
preg_replace nahrazuje jen prvni vyskyt
Přečteno: 737×
Odpovědět | Admin
Dobry den, mam problem s funkci preg_replace. Pouzivam ji v nasledujicim kodu:
$str='<p class="justify">odstavec1</p><p align="justify">odstavec2</p><p align="justify">odstavec3</p>';

$str=preg_replace("<p align=\"(.*)\">", "p class=\"\$1\"", $str);

echo htmlspecialchars($str);
a funkce preg_replace nahradi vzdy jen prvni vyskyt align="justify", v manualu je napsano ze pokud neni pouzit parametr limit nahradi se vsechny vyskyty.

Diky za kazdou radu
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

18.2.2005 12:26 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: preg_replace nahrazuje jen prvni vyskyt
Odpovědět | | Sbalit | Link | Blokovat | Admin
Hvězdička se chová "hladově"
"<p align=\"([^\"]*)\">"
18.2.2005 12:29 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše Re: preg_replace nahrazuje jen prvni vyskyt
Jeden z pěkných vynálezů perlích regulárních výrazů je *?:

"<p align=\"(.*?)\">"
18.2.2005 12:30 Michal Čihař | skóre: 61 | blog: Bláboly | Praha
Rozbalit Rozbalit vše Re: preg_replace nahrazuje jen prvni vyskyt
Odpovědět | | Sbalit | Link | Blokovat | Admin
To .* sežere všechno, protože * je hladová. Použij .*? nebo [^"]* a přečti si dokumentaci k regulárním výrazům co to znamená :-)
Weblate - překládání přes web | Gammu SMSD - posílání SMS | Blog

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.