Regulární výrazy
HackForum
| 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) | |
|
|
| 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 |
|
|
|
| preg_match('/<div id="(.)+">(.+)<\/div>/',$zdroj,$ma
tches);
var_dump($matches); (odpovědět) | d | 94.113.1.* | 20.10.2011 23:28 |
|
|
|
| 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) | |
|
|
| 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 |
|
|
|