2 řádky v php - reg exp

Pomozte nám splnit aktuální úkoly nebo se zapojte do našich projektů. Nebo sami navrhněte nějakou užitečnou činnost.
Není potřeba být členem, abyste pomohli.


Moderátoři: Republikové předsednictvo - asistenti, Vedoucí centrálních orgánů, Personální odbor - celý

Uživatelský avatar
Jakub.Michalek
Vedoucí resortního týmu
Příspěvky: 12369
Registrován: 22 čer 2009, 14:54
Profese: poslanec
Bydliště: Žižkov - Praha 3
Dal poděkování: 4206 poděkování
Dostal poděkování: 15787 poděkování
Kontaktovat uživatele:

2 řádky v php - reg exp

Příspěvek od Jakub.Michalek »

Potřebuji napsat dva řádky kódu v php, které by v následujícím seně nahradily každý obrázek jeho zmenšenou verzí, pokud obrázek končí otazníkem a číslem, které je větší než 180, a vypustily šířku.

Znamená to nahradit:
<img src="https://www.pirati.cz/_media/tiskove-zp ... .jpg?w=380" class="medialeft" title="Notové osnovy" alt="Notové osnovy" width="380" align="left">
následujícím
<img src="https://www.pirati.cz/_media/tiskove-zp ... g?w=[b]180[/b]" class="medialeft" title="Notové osnovy" alt="Notové osnovy" align="left">
Seno je uložené v proměnné $desc
Seno píše:<div id="box-rss-pirati" class="boxrss">
<div class="boxtitle">
<div class="boxtitleleft"><a href="tiskove-zpravy">Tiskové zprávy a stanoviska</a></div>
</div>
<div class="boxcontent">
<ul><div style="display: inline-block;"><li class="headline"><a href="http://www.pirati.cz/tiskove-zpravy/co_ ... rovani_not" title="Co Čech, to muzikant. Lásku k hudbě však brzdí zákaz kopírování not"><img src="https://www.pirati.cz/_media/tiskove-zp ... .jpg?w=380" class="medialeft" title="Notové osnovy" alt="Notové osnovy" width="380" align="left"></a>
<p style="text-align: left;"><a href="http://www.pirati.cz/tiskove-zpravy/co_ ... rovani_not" title="Co Čech, to muzikant. Lásku k hudbě však brzdí zákaz kopírování not">Co Čech, to muzikant. Lásku k hudbě však brzdí zákaz kopírování not</a>
</p><p>


Přiznám se, že jsem vůbec netušil, že knihovnám je aktuálním autorským zákonem zakázáno kopírovat notové osnovy, pokud neuplynulo aspoň 70 let od smrti autora. A tato informace mne velmi</p><p></p></li></div><ul><li><a href="http://www.pirati.cz/tiskove-zpravy/poz ... _varnsdorf" title="Piráti se sjíždí ve Varnsdorfu, projednají program pro krajské volby">Piráti se sjíždí ve Varnsdorfu, projednají program pro krajské volby</a></li><li><a href="http://www.pirati.cz/tiskove-zpravy/pir ... i_studenty" title="Piráti razantně posílili mezi studenty">Piráti razantně posílili mezi studenty</a></li></ul> </ul></div>
</div>

Jakub Michálek, předseda poslaneckého klubu Pirátů a vedoucí resortního týmu Spravedlnost
Nenič mě, sloužím všem. :)

Uživatelský avatar
Vaclav.Malek
Návštěvník – nepatří k Pirátům
Příspěvky: 8118
Registrován: 12 čer 2009, 01:32
Profese: filozof času, meta-politik
Dal poděkování: 4147 poděkování
Dostal poděkování: 6539 poděkování
Kontaktovat uživatele:

Re: 2 řádky v php - reg exp

Příspěvek od Vaclav.Malek »

pomůže normální replace ne?
Michal.Lupecka
Člen KS Olomoucký kraj
Příspěvky: 445
Registrován: 27 dub 2009, 18:10
Profese: webař
Bydliště: City 17
Dal poděkování: 611 poděkování
Dostal poděkování: 411 poděkování
Kontaktovat uživatele:

Re: 2 řádky v php - reg exp

Příspěvek od Michal.Lupecka »

Regulární výraz bych určitě napsal...
je to stále aktuální, nebo už to někdo udělal?
je nutné php? Některé nástroje (Pspad) by tu samou operaci provedli jednoduše se souborem. Regulární výrazy jsou v php totiž implementovány docela špatně.
@iiic
PGP Key IDs: 0x760CC8FBFF5A6EA7 | 0x8BC4688A2B9556EF

Co znamená mediální vyváženost? "Dnes vám zprostředkujeme rozhovor s předním odborníkem na dané téma a v rámci vyváženosti i s někým kdo nemá ani ponětí o čem mluví, ale cokoliv si vymyslí"
Uživatelský avatar
Jakub.Michalek
Vedoucí resortního týmu
Příspěvky: 12369
Registrován: 22 čer 2009, 14:54
Profese: poslanec
Bydliště: Žižkov - Praha 3
Dal poděkování: 4206 poděkování
Dostal poděkování: 15787 poděkování
Kontaktovat uživatele:

Re: 2 řádky v php - reg exp

Příspěvek od Jakub.Michalek »

Ano, je to stále aktuální. Prosím php.

Jakub Michálek, předseda poslaneckého klubu Pirátů a vedoucí resortního týmu Spravedlnost
Nenič mě, sloužím všem. :)

Uživatelský avatar
Lukas.Novy
Příznivec Pirátů – Jihomoravský kraj
Příspěvky: 21852
Registrován: 02 črc 2009, 22:45
Profese: auditor kyber. bezpečnosti, muž z Brna
Bydliště: Brno
Dal poděkování: 4906 poděkování
Dostal poděkování: 10293 poděkování
Kontaktovat uživatele:

Re: 2 řádky v php - reg exp

Příspěvek od Lukas.Novy »

Parsit html regexpem je cesta do pekla... pouzijte dom+xpath, napriklad jak
sem opravil podobnou hnusarnu v piznamu:

Kód: Vybrat vše

        $html = DOMDocument::loadHTML($pcontent);
        if ($html) {
            $xml = simplexml_import_dom($html);
            $result = $xml->xpath("//img");
	    foreach ($result as $r) {
	    	// tady teprve preg_replace
	    }
        }  
Ale jestli to ma byt oneshot a nema to byt trvaly kod, klidne udelejte neco
podobneho tomuto (z hlavy):

Kód: Vybrat vše

preg_replace('/(<img[^>]+?src="[^"]+?w)=\d+("[^>\/]*?\/?>)/g', "\\1=180\\2"...);
OFFTOPICYou can't parse [X]HTML with regex. Because HTML can't be parsed by regex. Regex is not a tool that can be used to correctly parse HTML. As I have answered in HTML-and-regex questions here so many times before, the use of regex will not allow you to consume HTML. Regular expressions are a tool that is insufficiently sophisticated to understand the constructs employed by HTML. HTML is not a regular language and hence cannot be parsed by regular expressions. Regex queries are not equipped to break down HTML into its meaningful parts. so many times but it is not getting to me. Even enhanced irregular regular expressions as used by Perl are not up to the task of parsing HTML. You will never make me crack. HTML is a language of sufficient complexity that it cannot be parsed by regular expressions. Even Jon Skeet cannot parse HTML using regular expressions. Every time you attempt to parse HTML with regular expressions, the unholy child weeps the blood of virgins, and Russian hackers pwn your webapp. Parsing HTML with regex summons tainted souls into the realm of the living. HTML and regex go together like love, marriage, and ritual infanticide. The <center> cannot hold it is too late. The force of regex and HTML together in the same conceptual space will destroy your mind like so much watery putty. If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. HTML-plus-regexp will liquify the nerves of the sentient whilst you observe, your psyche withering in the onslaught of horror. Rege̿̔̉x-based HTML parsers are the cancer that is killing StackOverflow it is too late it is too late we cannot be saved the trangession of a chi͡ld ensures regex will consume all living tissue (except for HTML which it cannot, as previously prophesied) dear lord help us how can anyone survive this scourge using regex to parse HTML has doomed humanity to an eternity of dread torture and security holes using regex as a tool to process HTML establishes a breach between this world and the dread realm of c͒ͪo͛ͫrrupt entities (like SGML entities, but more corrupt) a mere glimpse of the world of regex parsers for HTML will instantly transport a programmer's consciousness into a world of ceaseless screaming, he comes, the pestilent slithy regex-infection will devour your HTML parser, application and existence for all time like Visual Basic only worse he comes he comes do not fight he com̡e̶s, ̕h̵is un̨ho͞ly radiańcé destro҉ying all enli̍̈́̂̈́ghtenment, HTML tags lea͠ki̧n͘g fr̶ǫm ̡yo͟ur eye͢s̸ ̛l̕ik͏e liquid pain, the song of re̸gular expression parsing will extinguish the voices of mortal man from the sphere I can see it can you see ̲͚̖͔̙î̩́t̲͎̩̱͔́̋̀ it is beautiful the final snuffing of the lies of Man ALL IS LOŚ͖̩͇̗̪̏̈́T ALL IS LOST the pon̷y he comes he c̶̮omes he comes the ichor permeates all MY FACE MY FACE ᵒh god no NO NOO̼OO NΘ stop the an*̶͑̾̾̅ͫ͏̙̤g͇̫͛͆̾ͫ̑͆l͖͉̗̩̳̟̍ͫͥͨe̠̅s ͎a̧͈͖r̽̾̈́͒͑e not rè̑ͧ̌aͨl̘̝̙̃ͤ͂̾̆ ZA̡͊͠͝LGΌ ISͮ̂҉̯͈͕̹̘̱ TO͇̹̺ͅƝ̴ȳ̳ TH̘Ë͖́̉ ͠P̯͍̭O̚N̐Y̡ H̸̡̪̯ͨ͊̽̅̾̎Ȩ̬̩̾͛ͪ̈́̀́͘ ̶̧̨̱̹̭̯ͧ̾ͬC̷̙̲̝͖ͭ̏ͥͮ͟Oͮ͏̮̪̝͍M̲̖͊̒ͪͩͬ̚̚͜Ȇ̴̟̟͙̞ͩ͌͝S̨̥̫͎̭ͯ̿̔̀ͅ

Have you tried using an XML parser instead?

Máte pocit, že Vás KK nebo jiný funkcionář šikanuje, pomlouvá či zesměšňuje? Nejsem právník, ale zastoupím Vás v jednání s přezkumnými orgány. Pište nestranickému ombudsmanovi na ombudsman@krtek.net
Tel: 777-5-KRTEK

Uživatelský avatar
jaryn
Návštěvník – nepatří k Pirátům
Příspěvky: 93
Registrován: 15 črc 2012, 15:24
Profese: .
Dal poděkování: 60 poděkování
Dostal poděkování: 51 poděkování

Re: 2 řádky v php - reg exp

Příspěvek od jaryn »

neni jasny co vsechno se muze v tom HTML do budoucna zmenit. Regexp my mohl casem prestat fungovat.
Replace taky nemusi fungovat ve vsech moznych pripadech. Nejvic flexi je IMHO to pomoci DomDocument rozbit xpath najit elementy, naparsovat atributy znovu poskladat a ulozit z5 do HTML.

Jedna funkce 20-30 radku. Mam furu kodu pro praci s HTML/XHTML urcite bych to z toho poskladal.

PHP predpokladam > 5.3
byla by pecl_http >= 0.21.0 ?
Tito uživatelé poděkovali autorovi jaryn za příspěvek:
Lukas.Novy
j.

System configuration has been modified. Save? [yes/no]: yes

Proceed with reload? [confirm]
Uživatelský avatar
jaryn
Návštěvník – nepatří k Pirátům
Příspěvky: 93
Registrován: 15 črc 2012, 15:24
Profese: .
Dal poděkování: 60 poděkování
Dostal poděkování: 51 poděkování

Re: 2 řádky v php - reg exp

Příspěvek od jaryn »

2LN: mindreader ;o]
j.

System configuration has been modified. Save? [yes/no]: yes

Proceed with reload? [confirm]
anonym72078
Návštěvník – nepatří k Pirátům
Příspěvky: 2945
Registrován: 10 říj 2011, 22:43
Dal poděkování: 4375 poděkování
Dostal poděkování: 3028 poděkování

Re: 2 řádky v php - reg exp

Příspěvek od anonym72078 »

Zaviram, vyreseno.
Zamčeno

Zpět na „Úkoly a projekty“