Autor Zpráva
davef6
Profil
v reg. výrazu mám toto
 $regex_pattern2 = "/<title>(.*)<\/title>/";

mělo by to vypsat celý titulek stránky, ale při výpisu $regex_pattern2 mi to hodí toto /<\/title>/

Neví někdo kde může být chyba?

Moderátor Joker: Přepsal jsem titulek na více jednoznačný, název „Problém s regulérním výrazem“ má snad každý druhý dotaz na RV.
SwimX
Profil
davef6:
ukaž víc kódu, tady asi nebude.
a je to regulární výraz
Joker
Profil
davef6:
při výpisu $regex_pattern2
= něco jako echo($regex_pattern2) do prohlížeče?

Já jen že prohlížeč interpretuje HTML značky ;-)
Mmch. zajímavé, že popsaný výsledek vyprodukuje jen Firefox, Opera a IE (alespoň IE8) vyprodukují jen jedno lomítko.
davef6
Profil
$regex_pattern2 = "/<title>(.*)<\/title>/";
preg_match_all($regex_pattern2,$input,$matches2);
echo $regex_pattern2;
$jmeno = $matches2[1][0];
echo $jmeno;


$regex_pattern2 vypíše již zmíněné /<\/title>/ (ve firefoxu)
$jmeno nevypíše nic
Majkl578
Profil
SwimX:
a je to regulární výraz
Obojí je správně.
Joker
Profil
davef6:
$regex_pattern2 vypíše již zmíněné /<\/title>/ (ve firefoxu)
Ano, samozřejmě. Už jsem se snažil napovědět: prohlížeč interpretuje HTML značky.
Čili echo $regex_pattern2; do zdrojového kódu stránky vyprodukuje: /<title>(.*)<\/title>/ ...což Firefox zobrazí jako /<\/title>/.

Pokud kontrolní výpisy obsahují HTML kód, není moc dobrý nápad je kontrolovat pohledem na zpracovanou stránku v prohlížeči, kód stránky je daleko lepší volba ;-)

$matches2[1][0];
Kontrolní otázka: Kolikpak značek <title> obsahují vstupní data? Není možné, že tam žádný druhý výskyt není?
Jinak jako kontrolní výpis bych udělal raději celé pole, např.:
var_dump($matches)

Majkl578:
Obojí je správně.
Já bych se tedy hádal (byť "regulární" a "regulérní" má stejný význam, nemyslím si, že "regulární výraz" je to samé jako "regulérní výraz"), ale ne v tomhle vlákně.
davef6
Profil
pro příklad potřebuji získat třeba title odsud http://www.youtube.com/watch?v=1-XvdglSu6c

var_dump($matches2) vypíše null, takže je něco špatně, ale bohužel nemohu přijít na to co
Joker
Profil
davef6:
je něco špatně, ale bohužel nemohu přijít na to co
Na té stránce je <title> přes více řádků, takže musíte použít ještě modifikátor "single line" (s).
$regex_pattern2 = "/<title>(.*)<\/title>/s";
Majkl578
Profil
Joker:
Osobně mi "regulérní výrazy" také připadají podivné, ale neřešme to tady.

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