webForumDet fria alternativet

Fel på preg_match

9 svar · 821 visningar · startad av Emil W

Emil WMedlem sedan mars 2009512 inlägg
#1

Hej alla på wF !

Jag försöker hämta text från min twitter

men jag får inte till det med preg_match.

någon som ser vad jag har gjort för fel ?

Här är koden

<?php
$file = file_get_contents('http://twitter.com/Emil_W');
$file = preg_match("/<span class=\"entry-content\">(.*?)</span>/",$file);
echo $file
?>
voigtann1Medlem sedan juni 20019 519 inlägg
#2

känns som det är lite omständigt att Screenscrapar det när du har ett XML data du kan hämta. sen får du väl bara ut en kollektion av träffarna i ditt regexp, så du måste ju rendera ut $file med?

for ($i = 0; $i < count($file[0]); $i++) {
	echo $file[0][$i];
}
The_HulkMedlem sedan juni 20031 837 inlägg
#3

Har du läst på php.net hur preg_match fungerar?
http://se2.php.net/manual/en/function.preg-match.php

<?php
$m = array();
$file = file_get_contents('http://twitter.com/Emil_W');
if(preg_match("/<span class=\"entry-content\">(.*?)<\/span>/",$file, $m))
{
    print $m[1];
}
?>

/red fixade ett kodfel

voigtann1Medlem sedan juni 20019 519 inlägg
#4

The_Hulk skrev:

Har du läst på php.net hur preg_match fungerar?
http://se2.php.net/manual/en/function.preg-match.php

<?php
$m = array();
$file = file_get_contents('http://twitter.com/Emil_W');
if(preg_match("/<span class=\"entry-content\">(.*?)</span>/",$file, $m))
{
    print $m[1];
}
?>

Nu vet jag inte vem du menar om vem som har läst php.net, men ditt uttryck loopar inte ut träffarna, den tar väl bara ut den första <span class="entry-content">...</span> ? Du vill väl ändå loopar ut den?
Min kod är från Regexp buddy.

The_HulkMedlem sedan juni 20031 837 inlägg
#5

Självklart menade jag Emil W, ber om ursäkt för missförståndet. Eftersom han använde preg_match förväntade jag mig att han bara ville ha en träff. Han hade dock använt den lite fel.
Vill man få ut alla träffar ska man använda preg_match_all

<?php
$m = array();
$file = file_get_contents('http://twitter.com/Emil_W');
if(preg_match_all("/<span class=\"entry-content\">(.*?)<\/span>/",$file, $m, PREG_SET_ORDER))
{
    foreach ($m as $n)
    {
        print $n[1];
    }
}
?>

/red. Fixade ett kodfel

Emil WMedlem sedan mars 2009512 inlägg
#6

Det var att jag ville ha alla träffar.

Jag får detta när jag provar med din kod, det är när jag använder preg_match_all

Warning: preg_match() [function.preg-match]: Unknown modifier 'p' in C:\wamp\www\test.php on line 4

MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

Men om du nu kan få datan som RSS/XML, varför ska du ge dig på preg_match överhuvudtaget?

En mycket bättre lösning skulle vara att du använder SimpleXML.

Kolla "Examples" > "Usage".

Emil WMedlem sedan mars 2009512 inlägg
#8

MickeA.com skrev:

En mycket bättre lösning skulle vara att du använder SimpleXML.

Ok, ska ta och kika på detta.

The_HulkMedlem sedan juni 20031 837 inlägg
#9

Emil W skrev:

Det var att jag ville ha alla träffar.

Jag får detta när jag provar med din kod, det är när jag använder preg_match_all

Warning: preg_match() [function.preg-match]: Unknown modifier 'p' in C:\wamp\www\test.php on line 4

Det var jag som missade att fixa till din kod helt och hållet.
Man måste lägga till \ vid </span> så att det blir <\/span>

Emil WMedlem sedan mars 2009512 inlägg
#10

Tack så mycket

129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)