Autor | Zpráva | ||
---|---|---|---|
Trsak Profil |
#1 · Zasláno: 29. 4. 2014, 21:37:51
Zdravím,
v regulerních výrazech se moc nevyznám. Sestrojil jsem si následující: <?php $udalost = '<a href="http://seznam.cz/">Franza</a> I levelled my Attack skill, I am now level 25.<br><a href="http://seznam.cz/">Franza</a> I levelled my Attack skill, I am now level 25.<br><a href="http://seznam.cz/">Franza</a> I levelled my Attack skill, I am now level 25.<br>'; $udalost = preg_replace('/\<a href="(.*)\">(.*)\<\/a> I levelled my (.*?)\ skill, I am now level (.*?)\.<br>/i', '<a href="$1">$2</a> zvýšil svůj $3 skill, nyní má level $4.', $udalost); echo ($udalost); ?> Problém je, žě část <a href="(.*)\">(.*)\<\/a> bere vše od prvního <a> až po poslední </a>. Výsledek je proto takovýto: Franza I levelled my Attack skill, I am now level 25. Franza I levelled my Attack skill, I am now level 25. Franza zvýšil svůj Attack skill, nyní má level 25. Jak tomu zabránit? |
||
juriad Profil |
#2 · Zasláno: 29. 4. 2014, 21:40:36
Použij místo
.* raději .*? . Liší se tím, že varianta s otazníkem není žravá.
Dalši možností je použití [^<]* tedy povolení všeho kromě špičaté závorky.
|
||
Trsak Profil |
Varianta s otazníkem opravdu funguje, díky.
Narazil jsem na problém - chci ve výsledku před odkaz přidat obrázek, tedy takto: <img src="$3.png" width="18"> <a href="$1">$2</a> zvýšil svůj $3 skill, nyní má level $4. <obrázek> Franza zvýšil svůj Attack skill, nyní má level 25. <obrázek> Franza zvýšil svůj Attack skill, nyní má level 25. <obrázek> Franza zvýšil svůj Attack skill, nyní má level 25. Problém je, že když proměnná $udalost obsahuje odkaz třeba na začátku, tak se obrázek špatně umístí: $udalost = '<a href="#">Toto je ten odkaz</a> <a href="http://seznam.cz/">Franza</a> I levelled my Attack skill, I am now level 25.<br><a href="http://seznam.cz/">Franza</a> I levelled my Attack skill, I am now level 25.<br>'; <obrázek> Franza zvýšil svůj Attack skill, nyní má level 25. <obrázek> Franza zvýšil svůj Attack skill, nyní má level 25. Jak zařídit aby byl výsledek takto?: Toto je ten odkaz <obrázek> Franza zvýšil svůj Attack skill, nyní má level 25. |
||
peta Profil |
#4 · Zasláno: 30. 4. 2014, 15:39:15
Trsak:
Vidim to tak na dve moznosti. Bud vis, kolikatym odkazem to zacina a pouzijes preg_replace_callback s pocitanim a nebo upresnis href tak, aby se vyloucili ze seznamu ostatni odkazy, treba jako href="h.* vylouci href="#, protoze privni znak je krizek a pismeno h (nebo href="\w). |
||
Časová prodleva: 11 let
|
0