-2

私がやっている

preg_match("/\<\/p\> (\d*?) /", $error, $matches)

どこ$error="bla-bla-bla </p> 12345 bla-bla-bla"

奇妙なことに、正規表現を再確認したにもかかわらず、一致が見つからないということです。

うまくいかないのはなぜですか?

完全なコードは次のとおりです。

            $values=$form->getValue();
            $url = "http://something.freshdesk.com/helpdesk/tickets.xml";
            $request = "<helpdesk_ticket><description>".$values['subject']."</description><email>".$username."</email></helpdesk_ticket>"; 
            echo $request;
            $headers = array('Content-Type: application/xml','Content-Length: ' . strlen($request));
            var_dump($headers);

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_USERPWD, 'email@email.com:password');
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
//          curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
//          curl_setopt($ch, CURLOPT_HEADER, true);
            curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); 

            $http_result = curl_exec($ch);
            $error       = curl_error($ch);
            $http_code   = curl_getinfo($ch ,CURLINFO_HTTP_CODE);

            curl_close($ch);

            if ($error) {
              print "<br /><br />$error";
            } else {
              if (preg_match("/\<\/p\> (\d*?) /", $error, $matches)) {
                $ticket_id = $matches[1];
                print "Ticket submitted: $ticket_id\n";
              }
              print "<br /><br />Location header not found";
              var_dump($matches);
              var_dump($http_result);
              echo $error;
              echo $http_result;
4

2 に答える 2

1

あなたの正規表現は正しく、確かに一致します。問題は、http の応答で正規表現を実行しなかったことです。$http_resultの代わりに使用$error

preg_match("/\<\/p\> (\d*)/", $http_result, $matches);
于 2012-08-15T11:35:44.150 に答える
0

解決策を見つけました:

使うべきだっhtmlspecialchars()$error

于 2012-08-15T12:13:18.310 に答える