Autor | Zpráva | ||
---|---|---|---|
MikeCZ Profil |
Zdravím, mám kód:
<a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMRGSDvS8I/AAAAAAAACEM/tYBTki5EsRI/s1600-h/1.jpg"></a><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMfqplCZdI/AAAAAAAACEU/TYl2h8cT7kk/s1600-h/fed07_2_1061.jpg"></a><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMfqxrxPdI/AAAAAAAACEc/Dx-HtMXyQnw/s1600-h/43543453435435.jpg"></a><br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMRGP95yhI/AAAAAAAACEE/7xzHHTdOJxw/s1600-h/2.jpg"></a><br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMRFx5SdAI/AAAAAAAACD8/k0EFosn5FLk/s1600-h/3.jpg"></a><br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMRFrn76fI/AAAAAAAACD0/OLgnMmp7Gkc/s1600-h/4.jpg"></a><br /><a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMRFcsNMVI/AAAAAAAACDs/4djGKkdoYI0/s1600-h/5.jpg"></a><br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFxAV-3I/AAAAAAAACDk/WhiL_WVUpzI/s1600-h/6.jpg"></a><br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFuz-aJI/AAAAAAAACDc/PAxWQY86wWI/s1600-h/7.jpg"></a><br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFQWQnpI/AAAAAAAACDU/BDjspY7CHjc/s1600-h/8.jpg"></a><br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFCyh8-I/AAAAAAAACDM/ZlWb9nFtCbg/s1600-h/9.jpg"></a><br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMQE0LhUyI/AAAAAAAACDE/QBDC0oYQ8iY/s1600-h/10.jpg"></a><br /><a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMOuxlIIlI/AAAAAAAACC8/-4jVbI3Wt8A/s1600-h/11.jpg"></a><br /><a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMOuldplDI/AAAAAAAACC0/bIUd1eLaOH4/s1600-h/12.jpg"></a><br /><a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMOub_9fyI/AAAAAAAACCs/zv79mwnodFw/s1600-h/13.jpg"></a><br /><a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMOuPRWAOI/AAAAAAAACCk/KagrhJntU3k/s1600-h/14.jpg"></a><br /><a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMN78wcNWI/AAAAAAAACCU/FG7XTtEt_Kg/s1600-h/15.jpg"></a><br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMN7U68-uI/AAAAAAAACCM/-ePebfUlRaQ/s1600-h/16.jpg"></a><br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMN7C_cd5I/AAAAAAAACCE/n5PvHuhk6DE/s1600-h/17.jpg"></a><br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMN7M7sYjI/AAAAAAAACB8/mvMRl2-gP4M/s1600-h/18.jpg"></a><br /><a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMN6uYdPeI/AAAAAAAACB0/5aXk-cMgf10/s1600-h/19.jpg"></a><br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMNH2fRq8I/AAAAAAAACBs/_Wei1GQRQj4/s1600-h/20.JPG"></a><br /> Potřebuju nějakým způsobem zjišťovat, jestli se tam nacházejí prázdné tagy <a....></a> a všechny je odstranit, tím pádem bych měl dostat v řetězci už jen <br /> (či <br>) a pokud jich bude více jak 2 za sebou, např. 10, tak je chci vždy zaměnit za 2 :). Tedy z kódu, který je výše by mělo zbýt jen "<br /><br />" :). A pokud možno aby to fungovalo i pro <br>. Hádám, že bude zapotřebí regulerních výrazů. BTW v kódu se budou nacházet jen <br><br /> a <a...></a> tagy a nemusí být jen takto v řádku, můžou mezi nimi být i odřádkování apod. Díky za každou radu :). Moderátor Majkl578: Mírně jsem upravil nedokončený nadpis tématu
|
||
Majkl578 Profil |
#2 · Zasláno: 14. 12. 2009, 15:53:23 · Upravil/a: Majkl578
Chvíli jsem nad tím přemýšlel a snad jsem to pochopil správně, zkus použít toto:
$text = preg_replace('~\<a.*\>\s*\</a\>~iUs', '', $text); $text = preg_replace('~\s*(?:\<br(?: /)?\>){2,}\s*~is', '\1\1', $text); var_dump($text); Mimojiné, jedná se o regulární výrazy. |
||
MikeCZ Profil |
#3 · Zasláno: 14. 12. 2009, 16:17:58 · Upravil/a: MikeCZ
Díky, ty odkazy fungujou. Ale to druhý už ne.
string(14) "FD'sPhoto by :" a základ vypadal takhle: FD's<br /><a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMRGSDvS8I/AAAAAAAACEM/tYBTki5EsRI/s1600-h/1.jpg"></a> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMfqplCZdI/AAAAAAAACEU/TYl2h8cT7kk/s1600-h/fed07_2_1061.jpg"></a> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMfqxrxPdI/AAAAAAAACEc/Dx-HtMXyQnw/s1600-h/43543453435435.jpg"></a> <br /><a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMRGP95yhI/AAAAAAAACEE/7xzHHTdOJxw/s1600-h/2.jpg"></a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMRFx5SdAI/AAAAAAAACD8/k0EFosn5FLk/s1600-h/3.jpg"></a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMRFrn76fI/AAAAAAAACD0/OLgnMmp7Gkc/s1600-h/4.jpg"></a><br /> <a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMRFcsNMVI/AAAAAAAACDs/4djGKkdoYI0/s1600-h/5.jpg"></a><br /> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFxAV-3I/AAAAAAAACDk/WhiL_WVUpzI/s1600-h/6.jpg"></a><br /> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFuz-aJI/AAAAAAAACDc/PAxWQY86wWI/s1600-h/7.jpg"></a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFQWQnpI/AAAAAAAACDU/BDjspY7CHjc/s1600-h/8.jpg"></a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMQFCyh8-I/AAAAAAAACDM/ZlWb9nFtCbg/s1600-h/9.jpg"></a><br /> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMQE0LhUyI/AAAAAAAACDE/QBDC0oYQ8iY/s1600-h/10.jpg"></a><br /> <a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMOuxlIIlI/AAAAAAAACC8/-4jVbI3Wt8A/s1600-h/11.jpg"></a><br /> <a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMOuldplDI/AAAAAAAACC0/bIUd1eLaOH4/s1600-h/12.jpg"></a><br /> <a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMOub_9fyI/AAAAAAAACCs/zv79mwnodFw/s1600-h/13.jpg"></a><br /> <a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMOuPRWAOI/AAAAAAAACCk/KagrhJntU3k/s1600-h/14.jpg"></a><br /> <a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMN78wcNWI/AAAAAAAACCU/FG7XTtEt_Kg/s1600-h/15.jpg"></a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMN7U68-uI/AAAAAAAACCM/-ePebfUlRaQ/s1600-h/16.jpg"></a><br /> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMN7C_cd5I/AAAAAAAACCE/n5PvHuhk6DE/s1600-h/17.jpg"></a><br /> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMN7M7sYjI/AAAAAAAACB8/mvMRl2-gP4M/s1600-h/18.jpg"></a><br /> <a href="http://1.bp.blogspot.com/_Yc1xzP5LsyU/SyMN6uYdPeI/AAAAAAAACB0/5aXk-cMgf10/s1600-h/19.jpg"></a><br /> <a href="http://2.bp.blogspot.com/_Yc1xzP5LsyU/SyMNH2fRq8I/AAAAAAAACBs/_Wei1GQRQj4/s1600-h/20.JPG"></a> <br />Photo by : <a href="http://www.flickr.com/photos/tweakculture/sets/72157621357938914/">TweakCulture</a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMNHoG_i3I/AAAAAAAACBk/S__4BAzTg9E/s1600-h/21.jpg"></a><br /> <a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMNHv8YniI/AAAAAAAACBc/P2KlYZWprNI/s1600-h/22.jpg"></a><br /> <a href="http://4.bp.blogspot.com/_Yc1xzP5LsyU/SyMNHFf2CSI/AAAAAAAACBU/2T04faUkTuY/s1600-h/23.jpg"></a><br /> <a href="http://3.bp.blogspot.com/_Yc1xzP5LsyU/SyMNG032tdI/AAAAAAAACBM/82jly31qIBI/s1600-h/24.jpg"></a> (trochu jsem to nařádkoval, aby se to líp četlo) Když jsme odstranili <a></a>, tak tam zbylo hodně <br /> tagů, ale já je chci jen nahradit za <br /><br /> ať už jich tam je libovolnej počet více jak 2... A bude to fungovat i pro <br>? Tohle "(?: /)" by to asi v tom regulárním výrazu mělo zajišťovat, že? Ve výsledku jsem to tedy chtěl nějak takhle: string(14) "FD's<br /><br />Photo by : <a href="http://www.flickr.com/photos/tweakculture/sets/72157621357938914/">TweakCulture</a>" |
||
Majkl578 Profil |
#4 · Zasláno: 14. 12. 2009, 16:40:19
Je mi to jasné.
Zkus toto: $text = preg_replace('~\<a[^\>]*\>\s*\</a\>~iUs', '', $text); $text = preg_replace('~(?:\s*(\<br(?: /)?\>)\s*){2,}~is', '\1\1', $text); var_dump($text); V tom předchozím jsem udělal (tuším) dvě chybky. |
||
MikeCZ Profil |
#5 · Zasláno: 14. 12. 2009, 16:55:06
Díky, vypadá to, že to funguje. Mimochodem všechno na co jsem se tady v posledních dnech ptal... je to RSS čtečka, ale chci tam ty posty i uchovat a zároveň nechci aby uživatel při každym vstupu ověřoval 30 zdrojů, což by trvalo dost dlouho, takže to spouštim cronem a ukládam do db. Jenže lidi si dělaj co chtěj nebo maj špatný výstupy a někdy to chce ty obsahy dost upravit :).
|
||
MikeCZ Profil |
#6 · Zasláno: 14. 12. 2009, 18:05:16
Myslíš, že by šly ještě následující podmínky?
Když se za <br /><br /> (či <br><br>) nenachází již žádný text, tak se všechna <br /> či <br> smažou? Např. v případě: "text<br /><br />" (nebo <br><br>) To samé pak když se tagy pro odřádkování nacházejí před textem. "text<br /><br />" => "text" "<br /><br />text" => "text" "text<br><br>" => "text" "<br><br>text" => "text" A vlastně pak se také může stát, že zbyde jen jediný tag, takže ještě: "text<br />" => "text" "<br />text" => "text" "text<br>" => "text" "<br>text" => "text" Pokud v textu zbydou už jen samotné tagy, tak si je už ohlídám pomocí podmínek. |
||
Majkl578 Profil |
#7 · Zasláno: 14. 12. 2009, 18:40:02
To by mohlo jít takto:
$text = array( 'text<br /><br />', '<br /><br />text', 'text<br><br>', '<br><br>text', 'text<br />', '<br />text', 'text<br>', '<br>text', ); $text = preg_replace('~(?:^(?:\<br(?: /)?\>)*|(?:(?:\<br(?: /)?\>)*$))~is', '', $text); var_dump($text); Takže celé takto použité: $text = preg_replace('~\<a[^\>]*\>\s*\</a\>~iUs', '', $text); $text = preg_replace('~(?:\s*(\<br(?: /)?\>)\s*){2,}~is', '\1\1', $text); $text = preg_replace('~(?:^(?:\<br(?: /)?\>)*|(?:(?:\<br(?: /)?\>)*$))~is', '', $text); var_dump($text); |
||
MikeCZ Profil |
#8 · Zasláno: 14. 12. 2009, 18:55:11
Díky :). Vypadá to, že to funguje i když tam zůstanou jen samotné tagy... je to tak? Chci se jen ujistit.
|
||
Majkl578 Profil |
#9 · Zasláno: 14. 12. 2009, 18:59:22 · Upravil/a: Majkl578
Ano. Ten poslední regulár ještě uprav takto:
$text = preg_replace('~(?:^(?:\s*\<br(?: /)?\>\s*)*|(?:(?:\s*\<br(?: /)?\>\s*)*$))~is', '', $text); Aby tam na konci nezůstala např. samotná mezera jako výsledný řetězec. |
||
Časová prodleva: 14 let
|
0