webForumDet fria alternativet

Sökning i sträng

PHP

26 svar · 758 visningar · startad av Web-Tor · sida 2 av 2

Frågan, av Web-Tor

Den här koden kommer att skiva ut "foo". Hur gör jag för att den istället ska skriva ut "6351529770" när den får träff på "foo"? Jag kan alltså inte ändra på words-arrayen för att få den att söka efter "6351529770" direkt. <? $str='dSI(0,0,6351529770,"foo and some more stuff",0,1)'; $words=array('foo','bar'); foreach ($words as $word){ if (pregmatch('/'.$word.'/is',$str,$match)){ echo

Läs frågan i sin helhet →
Medlem sedan aug. 20002 975 inlägg
#21

Testa något i stil med:

preg_match('/<a href="([^"]+)"[^>]*>('.preg_quote($word).')<\/a>/is', $str, $match);

Alternativt preg_match_all om du förväntar dig flera träffar på varje ord.

Medlem sedan nov. 200013 890 inlägg
#22

För att vara på den säkra sidan ändrade jag lite men i stort sett ser det ut att funka. Tack igen :)

preg_match_all('/<a href="([^"]+)"[^>]*>[^"]*('.preg_quote($word).')[^"]*<\/a>/is',$str,$match)
Medlem sedan nov. 200013 890 inlägg
#23

Shit!
Ser nu att den bara plockar ett resultat fastän jag använder preg_match_all (). Vad kan det bero på?

Medlem sedan aug. 20002 975 inlägg
#24

Hur ser din aktuella kod ut nu ?

Medlem sedan nov. 200013 890 inlägg
#25
<?
function find_numbers($str) {
	$words=array('presley');
	global $svar;

	foreach ($words as $word){
		if (preg_match_all('/<a href="([^"]+)"[^>]*>[^"]*('.preg_quote($word).')[^"]*<\/a>/is',$str,$match)){
			$svar.='<a href='.$match[1][0].'>'.$match[2][0].'</a><br>';
		}
	}

	if ($svar)
		echo $svar;
	else
		echo "Ingen träff";
}

$page='http://search.ebay.com/elvis-sandwich_W0QQcatrefZC6QQcatrefZC6QQcoactionZcompareQQcoentrypageZsearchQQcopagenumZ1QQfromZR10QQsojsZ1QQsosortpropertyZ1QQsospellrecommendationZ1QQsotrtypeZ1QQsotrvalueZ1';

$page=file_get_contents($page);
find_numbers($page);
?>
Medlem sedan aug. 20002 975 inlägg
#26

Du hämtar endast första elementet från arrayerna som kan innehålla flera värden.

    if (preg_match_all('/<a href="([^"]+)"[^>]*>[^"]*('.preg_quote($word).')[^"]*<\/a>/is', $str, $match)){
       for ($i=0; $i<count($match[1]); $i++) {
          $svar.='<a href='.$match[1][$i].'>'.$match[2][$i].'</a><br>';
       }
    }
Medlem sedan nov. 200013 890 inlägg
#27

Ah! Visst är det så.
Tack för 15:e gången. ;)

279 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)