Autor | Zpráva | ||
---|---|---|---|
UrbiCZ Profil |
#1 · Zasláno: 4. 2. 2014, 10:30:26
Zdravim. Pokouším se rozparsovat tento chunk:
</table> <p><b>Pamela Denise Anderson</b> (born 1 July 1967)<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span>[</span>2<span>]</span></a></sup><sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span>[</span>3<span>]</span></a></sup><sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span>[</span>4<span>]</span></a></sup><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span>[</span>5<span>]</span></a></sup> is a Canadian-American actress, <a href="/wiki/Model_(person)" title="Model (person)" class="mw-redirect">model</a>, <a href="/wiki/Television_producer" title="Television producer">producer</a>, author, activist, and former <a href="/wiki/Showgirl" title="Showgirl">showgirl</a>, known for her roles on the television series <i><a href="/wiki/Home_Improvement_(TV_series)" title="Home Improvement (TV series)">Home Improvement</a></i>, <i><a href="/wiki/Baywatch" title="Baywatch">Baywatch</a></i>, and <i><a href="/wiki/V.I.P._(TV_series)" title="V.I.P. (TV series)">V.I.P.</a></i> She was chosen as a <a href="/wiki/Playboy_Playmate" title="Playboy Playmate">Playmate of the Month</a> for <i><a href="/wiki/Playboy" title="Playboy">Playboy</a></i> magazine in February 1990.<sup id="cite_ref-playmate_6-0" class="reference"><a href="#cite_note-playmate-6"><span>[</span>6<span>]</span></a></sup> For a time, she was known as <b>Pamela Anderson Lee</b> (or <b>Pamela Lee</b>) after marrying <a href="/wiki/M%C3%B6tley_Cr%C3%BCe" title="Mötley Crüe">Mötley Crüe</a> drummer <a href="/wiki/Tommy_Lee" title="Tommy Lee">Tommy Lee</a>. She maintains dual <a href="/wiki/Canadian_nationality_law" title="Canadian nationality law">Canadian</a> and <a href="/wiki/American_nationality_law" title="American nationality law" class="mw-redirect">American</a> citizenship.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span>[</span>7<span>]</span></a></sup> Anderson is a notable member of the <a href="/wiki/Animal_Rights" title="Animal Rights" class="mw-redirect">Animal Rights</a> movement and has conducted campaigns condemning the commercial fur industry and promoting veganism<sup id="cite_ref-PETA_CrueltyDoesntFly_8-0" class="reference"><a href="#cite_note-PETA_CrueltyDoesntFly-8"><span>[</span>8<span>]</span></a></sup> through the animal welfarist organisation <a href="/wiki/PETA" title="PETA" class="mw-redirect">PETA</a>.</p> <p></p> <div id="toc" class="toc"> Snažím se vyhledat text mezi tagem </table> a <div id="toc" class="toc"> a to takto: $najit = preg_match_all('/<\/table>(.)+<div id="toc" class="toc">/',$wiki, $vlajky_nasich_otcu); Bohužel mi to stále nefunguje a nemůžu přijít na to, kde je problém. Zkoušel jsem si testovací řetězec vytvořit na lokále a vše funguje. Když ovšem sosnu tento řetězec z netu, tak výraz nefunguje. Díky za radu. |
||
Joker Profil |
#2 · Zasláno: 4. 2. 2014, 10:39:02
UrbiCZ:
Nešlo by to zpracovat normálně HTML parserem? |
||
UrbiCZ Profil |
#3 · Zasláno: 4. 2. 2014, 10:46:03
Učím se regulární výrazy a tak to chci zavdat takto...
|
||
DJ Miky Profil |
#4 · Zasláno: 4. 2. 2014, 11:24:54
Problém bude nejspíš v tom, že tečka standardně nechytá znaky nového řádku. Vzhledem k tomu, že v ukázce je hledaný blok rozdělený do více řádků, je potřeba toto chování změnit modifikátorem
s :
/<\/table>(.)+<div id="toc" class="toc">/s |
||
lionel messi Profil |
#5 · Zasláno: 4. 2. 2014, 11:27:13
Odporúčam riešenie od DJ Miky, pred niekoľkými mesiacmi som sa trápil s tým, ako odstrániť doctype a hlavičku stránky pomocou RV, všetko fungovalo, ale konce riadkov sa nejak nechytali, vzdal som to a až neskôr náhodou som prišiel na modifikátor s, ktorý toto správanie odstránil.
|
||
UrbiCZ Profil |
#6 · Zasláno: 4. 2. 2014, 12:22:26
Super, to bude nejspíš ono. Jenže teď se nepovede ani parsování, protože server nechce odeslat data. Zobrazí se v Googlu kód chyby: ERR_EMPTY_RESPONSE.
Kód: $wiki = file_get_contents("http://en.wikipedia.org/wiki/Pamela_Anderson"); $najit = preg_match_all('/<\/table>(.)+<div id="toc" class="toc">/s',$wiki, $output); V logu chyb se zobrazí tohle: [Tue Feb 04 12:09:59 2014] [notice] Parent: child process exited with status 255 -- Restarting. [Tue Feb 04 12:09:59 2014] [notice] Apache/2.2.22 (Win32) PHP/5.4.5 configured -- resuming normal operations [Tue Feb 04 12:09:59 2014] [notice] Server built: Jan 28 2012 11:16:39 [Tue Feb 04 12:09:59 2014] [notice] Parent: Created child process 7572 [Tue Feb 04 12:09:59 2014] [notice] Child 7572: Child process is running [Tue Feb 04 12:09:59 2014] [notice] Child 7572: Acquired the start mutex. [Tue Feb 04 12:09:59 2014] [notice] Child 7572: Starting 50 worker threads. [Tue Feb 04 12:09:59 2014] [notice] Child 7572: Starting thread to listen on port 80. |
||
DarkMeni Profil |
Asi nedostal žádnej výstup (kromě http hlaviček), tak proto ta chyba
Zkus to třeba s var_dump() , ten pokaždý něco vypíše, minimálně aspoň že "NULL"
<?php $najit = preg_match_all('/<\/table>(.+)<div id="toc" class="toc">/s',$wiki, $output); var_dump($output); ?> A možná bude stačit preg_match() - to, co hledáš je tam jen jednou, ne?
|
||
UrbiCZ Profil |
#8 · Zasláno: 4. 2. 2014, 13:32:12
Zkoušel jsem to s výstupem pomocí print_r i var_dump, ale nic.
jojo, preg_match postačí.... |
||
UrbiCZ Profil |
#9 · Zasláno: 4. 2. 2014, 15:55:10
Tak vyřešeno, stačilo odstranit závorku ve které byla tečka:
$najit = preg_match_all('/<\/table>.+<div id="toc" class="toc">/s', $wiki, $matches); Díky. |
||
Časová prodleva: 10 let
|
0