Valami gáz van azzal a rendszerrel. Kinyírja neked az stdout-ot.Oké. Akkor előkapartam a cURL-es wrapperemet, meg összedobtam két függvényt:function get_ext_webpage($url)
{
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, $url);
curl_setopt ($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($curl, CURLOPT_CONNECTTIMEOUT, 5);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
function get_line_with_string($haystack, $needle, $offset = 0)
{
$s1 = strpos($haystack, $needle, $offset);
if ($s1 === false)
{
return false;
}
$s2 = strpos($haystack, "\n", $s1);
if ($s2 === false)
{
$s2 = strlen($haystack);
}
if ($haystack[$s2 - 1] == "\r") /* Handle windows (yuck) newlines... */
{
--$s2;
}
$s0 = strrpos($haystack, "\n", $s1 - strlen($haystack));
if ($s0 === false)
{
$s0 = -1;
}
++$s0;
return array($s0, $s2);
}
function get_lines_with_string($haystack, $needle, $offset = 0)
{
$result = array();
while (is_array($a = get_line_with_string($haystack, $needle, $offset)))
{
$result []= substr($haystack, $a[0], $a[1] - $a[0]);
$offset = $a[1];
}
return $result;
} És akkor az érintett sor így módosul:$job = implode("\n", get_lines_with_string(get_ext_webpage($row['partnerurl']), 'artdet__stock-title')); Feltéve, ha a grep több sort is visszaadhat. Ha mindig csak egy sor jöhet be onnan, akkor használhatod az első függvényt is, csak kicsit átírva:function get_line_with_string($haystack, $needle, $offset = 0)
{
$s1 = strpos($haystack, $needle, $offset);
if ($s1 === false)
{
return false;
}
$s2 = strpos($haystack, "\n", $s1);
if ($s2 === false)
{
$s2 = strlen($haystack);
}
if ($haystack[$s2 - 1] == "\r") /* Handle windows (yuck) newlines... */
{
--$s2;
}
$s0 = strrpos($haystack, "\n", $s1 - strlen($haystack));
if ($s0 === false)
{
$s0 = -1;
}
++$s0;
return substr($haystack, $s0, $s2 - $s0);
} És akkor az érintett sor is így módosul:$job = get_line_with_string(get_ext_webpage($row['partnerurl']), 'artdet__stock-title'); Ettől függetlenül, ha a grep működésének utánzása a cél, akkor én az egyes felállást választanám (multiline-failsafe) és ha óránként fut, akkor meg igazán érdektelen az extra overhead, amivel az egysoros eredményre meghívott külső függvény jár. |