我从网上使用curl从给定网址中获取值正常工作,但问题是,给出组合字符串 - 首先url有一个值返回,下一个url返回5个值,所以总共六个值显示如下, "testdata1testdata2testdata3testdata4testdata5testdata6testdata7"
我需要将这些数据插入到mysql中,它像字符串一样存储如何用逗号分隔。
function data($urls,$v)
{
foreach ($urls as $url => $key)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $key);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 20);
curl_setopt($curl, CURLOPT_USERAGENT, $useragent);
$str = curl_exec($curl);
curl_close($curl);
$html= str_get_html($str);
foreach($html->find('.name') as $element)
{
$grab = $element->innertext;
$sql = $this->db->prepare("UPDATE table SET word='$grab' where url='$v[$url]'");
}
}
}
答案 0 :(得分:0)
<强>更新强>
您在评论中写道,过去的变量中没有数字。在这种情况下,除非你知道,否则无法猜测分界符应该在哪里,即
如果你没有,答案是:你不能抱歉。正如评论中建议的 Shah Rukh 一样,尝试使用ie json将参数传递给另一个页面/子页面/脚本。
如果每个变量都以数字结束,您可以尝试这个解决方案:
(我假设传递的每个变量都以数字结尾,所以你必须非常小心,并确保这是确切的格式,数据将始终发送)。
function every($matches) {
return $matches[1].',';
}
$input = 'testdata1testdata2testdata3testdata4testdata5testdata6testdata7';
$input = preg_replace_callback( "|(\d+)|", "every", $input);
$input = explode(',', rtrim($input, ","));
print_r($input);
将打印出来:
Array
(
[0] => testdata1
[1] => testdata2
[2] => testdata3
[3] => testdata4
[4] => testdata5
[5] => testdata6
[6] => testdata7
)
我希望它有所帮助,但是我认为您应该更改应用程序的某些逻辑,并且以更加用户友好的格式在页面之间发送数据作为json例。最好的问候!
PS。如果您想摆脱&#34; test&#34;,您可以这样做:
foreach ($input as $key => $value) $input[$key] = substr($value, 4);
但是在修改数组的同时要记住要小心。