使用php分隔的逗号将字符串转换为数组

时间:2014-07-25 05:12:17

标签: php mysql curl pdo

我从网上使用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]'");
        }
    }
}

1 个答案:

答案 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);

但是在修改数组的同时要记住要小心。