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.
26 svar · 794 visningar · startad av Web-Tor · sida 2 av 2
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 hela trådstarten →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.
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)
Shit!
Ser nu att den bara plockar ett resultat fastän jag använder preg_match_all (). Vad kan det bero på?
Hur ser din aktuella kod ut nu ?
<?
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);
?>
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>';
}
}
Ah! Visst är det så.
Tack för 15:e gången.