[PHP] preg_replace matcht niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Av3ng3rtje
  • Registratie: December 2002
  • Laatst online: 18-08 10:15
Hallo,

Ik wil uit een stuk html het volgende stuk html matchen:

HTML:
1
Passive: <a href="http://wow.allakhazam.com/db/spell.html?wspell=7597" class="itemeffectlink">Improves your chance to get a critical strike by 1%.</a>


Nu wil ik "Improves your chance to get a critical strike by 1%" opslaan in een variable, daarvoor gebruik preg_replace (daarmee is het mogelijk om de waarde van en group naar een functie gooien).


In main();
PHP:
1
2
3
4
5
6
preg_replace("/Passive\: \<a href\=\"(.+)+\" class\=\"(.+)+\"\>(.+)+\<\/a\>/se","\$this->_savevar('\\3')",$v);
            
if($this->PREG_VAR != null) {
    $this->itemInfo['extra'][] = "Passive: " . $this->PREG_VAR;
}
$this->PREG_VAR = null;


In _savevar
PHP:
1
2
3
function _savevar($var) {       
    $this->PREG_VAR = $var;
}


Het probleem nu is dat hij savevar niet uitvoert wat dus betekent dat hij niet match , ik heb al wat dingen geprobeerd. Ik heb geprobeerd de hele html regel in te voegen maar dat haalde ook weinig uit

Gehele Html code:

HTML:
1
2
3
4
5
6
7
8
9
<table cellpadding="0" border="0" class="wowitemt">
<tr><td colspan="2"><span class="purplename">Blastershot Launcher</span></td></tr>
<tr><td colspan="2">Binds when picked up</td></tr>
<tr><td>Range</td><td align="right">Gun</td></tr><tr><td>73 -  136 Damage</td><td align="right">Speed 2.60</td></tr>
<tr><td>(40.2 damage per second)</td></tr>
<tr><td colspan="2">+6 Stamina</td></tr>
<tr><td colspan="2">Requires Level 60</td></tr>
<tr><td colspan="2"><span class="itemeffectlink">Passive: <a href="http://wow.allakhazam.com/db/spell.html?wspell=7597" class="itemeffectlink">Improves your chance to get a critical strike by 1%.</a></span></td></tr>
<tr><td class="akznotice" colspan="2">Item display is courtesy <a href="http://wow.allakhazam.com/">wow.allakhazam.com</a>.</td></tr></table>


Wie o wie zou mij kunnen helpen ?

[ Voor 53% gewijzigd door Av3ng3rtje op 05-08-2005 18:28 ]


Acties:
  • 0 Henk 'm!

  • N0 0B
  • Registratie: Mei 2004
  • Laatst online: 05:28

N0 0B

cxb1=N#

Wat is je vraag dan? / wat gaat er fout?

Won't you break the beats, cause I'm hardcore - Tiga


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:51

crisp

Devver

Pixelated

Waarom ueberhaupt met een preg_replace; met preg_match (of preg_match_all) kan je de match(es) ook opslaan, en je krijgt een indicatie terug of er ueberhaupt een match is.

[ Voor 24% gewijzigd door crisp op 05-08-2005 18:25 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Av3ng3rtje
  • Registratie: December 2002
  • Laatst online: 18-08 10:15
N0 0B schreef op vrijdag 05 augustus 2005 @ 18:13:
Wat is je vraag dan? / wat gaat er fout?
Aangepast.

@crisp: ik zal preg_match nog eens bekijken.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:51

crisp

Devver

Pixelated

waarom doe je niet gewoon zoiets:
PHP:
1
2
preg_match('/Passive: <a[^>]+>(.*?)<\/a>/', $html, $match);
print_r($match);

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Av3ng3rtje
  • Registratie: December 2002
  • Laatst online: 18-08 10:15
crisp schreef op vrijdag 05 augustus 2005 @ 18:37:
waarom doe je niet gewoon zoiets:
PHP:
1
2
preg_match('/Passive: <a[^>]+>(.*?)<\/a>/', $html, $match);
print_r($match);
Dat werkt , dank je :) , preg_replace stond krom.

[ Voor 7% gewijzigd door Av3ng3rtje op 05-08-2005 18:42 ]

Pagina: 1