Autor Zpráva
oto313
Profil
Dobrý den potřeboval bych, pomocí funkce preg _match_all, dostat adresy a text jen z divu "neco" s nadpisem "<h1>nadpis:</h1>". V regulárních výrazech jsem začátečník.
<h1>nadpis:</h1>
<div class="neco">
<a href="adresa1">text1</a>,
<a href="adresa2">text2</a>, 
<a href="adresa2¨3">text3</a></div>

Děkuji za každou radu
Tori
Profil
Nemůžu to teď vyzkoušet, ale snad to bude fungovat. Zkontrolujte přesnou podobu html zdroje, kde všude před tím divem můžou být navíc nějaké mezery a zalomení řádku. "Nula a více bílých znaků" se píše \s*?
preg_match_all('~<h1>nadpis\:</h1>\s*?<div class="neco">(.+?)</div>~is', $html, $m);
print_r($m);
oto313
Profil
nojo jenže já bych potřeboval, aby jen ciste adresu a odkaz bez tagu ... a ještě nevim jak s tema čárkama, ty odkazy jsou odděleny ", "
oto313
Profil
přesné znění:
<h4>Hrají:</h4>
					<span data-truncate="280">
						<a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, <a href="adresa">odkaz</a>, 
					</span>
Ofi
Profil
takto by měl ten regex fungovat. v proměnné kam si naplníš shody by měly ty odkazy(obsahy href) být pod indexem 2.
<h1>nadpis\:<\/h1>\s*<div class=\"neco\">\s*(<a href=\"([^\"]+)\">[^<]*<\/a>\,?\s*)+<\/div>

na to tvé konkrétní zadání už si to dosadíš ne? :)
oto313
Profil
Bohužel to nefunguje: preg_match_all('/<h4>Hrají:<\/h4>\s*<span data-truncate="280">\s*(<a href="([^\"]+)">[^<]*<\/a>\,?\s*)+<\/span>/', $html, $match) =>
  
[herci] => Array
        (
            [0] => Array
                (
                    [0] => <h4>Hrají:</h4>
					<span data-truncate="280">
						<a href="/tvurce/4777-matheus-nachtergaele/">Matheus Nachtergaele</a>, <a href="/tvurce/13542-leandro-firmino/">Leandro Firmino</a>, <a href="/tvurce/4778-seu-jorge/">Seu Jorge</a>, <a href="/tvurce/13548-phellipe-haagensen/">Phellipe Haagensen</a>, <a href="/tvurce/4779-alexandre-rodrigues/">Alexandre Rodrigues</a>, <a href="/tvurce/13580-douglas-silva/">Douglas Silva</a>, <a href="/tvurce/20052-jonathan-haagensen/">Jonathan Haagensen</a>, <a href="/tvurce/20380-alice-braga/">Alice Braga</a>, <a href="/tvurce/17045-gero-camilo/">Gero Camilo</a>
					</span>
                )
            [1] => Array ( [0] => <a href="/tvurce/17045-gero-camilo/">Gero Camilo</a>)
            [2] => Array ( [0] => /tvurce/17045-gero-camilo/)
        )
)
oto313
Profil
Tak jsem to vyřešil, ale neuměl by to někdo zkrátit do jedné funkce?
if (preg_match_all('/<h4>Hrají\:<\/h4>[\s]*<span data-truncate="280">[\s]*(.*)[\s]*<\/span>/', $html, $match, PREG_SET_ORDER)) {
  if (preg_match_all('/<a href="([^"]*)">([^<]*)<\/a>/', $match[0][1], $match, PREG_SET_ORDER)) {
    $movie['herci'] = $match;
  }
} 

Děkuji
peta
Profil
Jako vlepit to do te zavorky?
(.*) -> (<a href="([^"]*)">([^<]*)<\/a>)
A co kdyz tam neni odkaz na herce, protoze tam nekdo nedodelal tu stranku? :)
oto313
Profil
Tohle nefungovalo(viz předchozí přízpěvek):
preg_match_all('/<h4>Hrají:<\/h4>\s*<span data-truncate="280">\s*(<a href="([^\"]+)">[^<]*<\/a>\,?\s*)

A jak to myslíš s tim, že někdo nedodělal stránku?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0