Limites des boucles php

Bonjour, à tous !
J’ai fait le code ci-dessous, mais j’ai un problème avec les grandes pages. En effet, j’arrive à récupérer les valeurs que je veux lorsqu’elle est assez petite. Le problème c’est que mon script s’arrète à environ 100 éléments. Après, le script bloque. Je pense que c’est une histoire de sécurité, mais je n’arrive à y remédier…

$page = file_get_contents("ma-page.php");
$pattern ="/restaurants_hotel/([a-z]+([-][a-z]+)*_[0-9]{1,20})/Profil-Lieu";
$i=0;
while (eregi($pattern,$page,$regs))
{
$re = $regs[1];
mysql_query("INSERT INTO id VALUES('$re')");
$page = str_replace($regs[1], "", $page);
}

Merci d’avance pour votre aide ! :slight_smile:

probablement une question de temps
set_time_limit(0); pour ne plus avoir de limite de temps
mais dans ton cas, c’est pas vraiment recommandé
au final t’as beaucoup trop de requètes mysql.

regarde du coté de preg_match_all pour les expressions régulières, et après pour construite ta requète.


$s = "INSERT INTO id VALUES ";
$count = count($result[1]); //Compte le nombre de résultats trouvé par preg_match
for($i=1;$i<$count;$i++)
{
if($i != ($count - 1)) $s .= ', ';
$s .= '(\''.mysql_real_escape_string($result[1][$i]).'\')';
}

Merci pour l’aide. J’ai transformé ma fonction en preg_match_all :

$html = "/restaurants_hotel/a-la-bonne-marmite_200036000/Profil-Lieu lkjd lksjds skdjsd /restaurants_hotel/a-la-bonne-table_4932/Profil-Lieu";

preg_match_all("/restaurants_hotel/([a-z]+([-][a-z]+)*_[0-9]{1,20})/Profil-Lieu", $html, $matches);

foreach ($matches as $val) {
    echo "part 1: " . $val[1] . "\n";
}

Mais ça affiche rien… Visiblement mon masque marche pas. Pourtant dans mon ancienne fonction, mon masque marchait.
Avez-vous une idée ? Merci encore !:bounce:

Parce que preg_replace, c’est pas la même syntaxe

preg_match_all("@/restaurants_hotel/([a-z]+([-][a-z]+)*_[0-9]{1,20})/Profil-Lieu@i", $html, $matches);

Merci beaucoup !!! Ça marche impeccable !:super: