Regulární výrazy

HackForum

Regulární výrazy#
Ahojte, měl bych dotaz ohledně regulárních výrazů. Řekněme, že mám následující zdroják:

<?php
$zdroj = 'blabla<div id="bla">obsah</div>blabla';
preg_match('/<div id="(.)+">(.)+<\/div>/',$zdroj,$ma
tches);
echo htmlspecialchars($matches[0]);
?>

Zajímá mě, jakým způsobem udělat, aby mi ten regulární výraz vrátil pouze část ohraničenou tagem <div>, tzn. pouze slovo "obsah". Musím to dolovat jako substring podle pozice prvního výskytu znaku > a druhého znaku <, nebo se to dělá jinak a já na to jdu blbě?
Předem děkuji

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP20.10.2011 14:32
re: Regulární výrazy#
Je nějaký důvod proč nepoužít HTML parser? Osobně jsem několikrát zkoušel psát regulární výrazy na parsování HTML, ale vždy to je fail, ve kterém zbývá spousta možností k chybám. Nakonec jsem si napsal vlastní parser, ale věřím že v PHP něco použitelného bude, na první pohled třeba [link]
(odpovědět)
Bystroushaak_ | 31.31.73.*20.10.2011 17:44
re: Regulární výrazy#
preg_match('/<div id="(.)+">(.+)<\/div>/',$zdroj,$ma
tches);

var_dump($matches);
(odpovědět)
d | 94.113.1.*20.10.2011 23:28
re: Regulární výrazy#
Super, obe varianty vypadaji zajimave. Dekuji.

----------
Teprve když vstáváte s hackingem a uléháte s myšlenkou na něj, máte šanci být hackerem.
(odpovědět)
.cCuMiNn. | E-mail | Website | PGP21.10.2011 12:37
re: Regulární výrazy#
Jinak ukázka proč nejsou regulární výrazy na parsování HTML moc vhodné je v tom, že musíš ošetřit případ kdy je parametr ID přidán s nějakým dalším parametrem, nebo jen od slova 'div' oddělen mezerou, popřípadě na novém řádku, jinými uvozovkami atp..

Pokud to potřebuješ jen k jedné stránce, tak to pravděpodobně bude fungovat, ale jestli to chceš používat univerzálně, tak dříve nebo později narazíš na podobný případ, kdy ti to z ničeho nic přestane fungovat.
(odpovědět)
Bystroushaak_ | 31.31.73.*21.10.2011 13:57

Zpět
 
 
 

 
BBCode