文字列から URL をインターセプトする php の問題
皆さんこんにちは、まず第一に、私は php を知りませんが、解決するのに役立つと幸いです。ありがとうございます。
PHP プログラムから取得しました。文字列 $longurl を呼び出します
この $longurl エコーの結果は、
www.csdn.net/123456ここをクリック< ;/a>
www.csdn.net/123456 のこのセクションを傍受する方法
オンラインで見つけた結果は次のとおりです
$aa = $longurl ;
preg_match("/http[^"]*/",$aa,$bb);
echo $bb[0];
しかし、Baidu 短縮 URL API を短縮したいプログラムの次の部分で使用します
プログラムは
$urlbd = '$bb[0]';
$result = getBaiduShortUrl($urlbd);
です。 if ($result) {
echo ' 成功:'.$result;
} else {
die('failure');
}
function getBaiduShortUrl($urlbd) {
$data = array(
'url' => $urlbd,
);
$baidu_url = 'http://dwz.cn/create.php';
$ ret = postData($baidu_url, $data);
if ($ret) {
$ret = json_decode($ret, true);
if ($ret['status'] !== 0 ) {
return false;
} else {
return $ret['tinyurl'];
}
} else {
return false;
}
}
function postData ($urlbd, $data) {
$options = array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => false,
CURLOPT_FOLLOWLOCATION = > true,
CURLOPT_ENCODING => 'GZIP, DEFLE, SDCH',
Curlopt_useragent = & GT; 'Mozilla/5.0 (x11; linux x86_64) Applewebkit/535.1 (khtml、10 chromium/) 14.0.835.202 chrome/14.0.835.202 Safari/535.1 ',
CURLOPT_AUTOREFERER => true,
CURLOPT_CONNECTTIMEOUT => 120,
CURLOPT_TIMEOUT => 120,
CURLOPT_MAXREDIRS => 🎜> CURLOPT_REF エラー=> 'http://www.baidu.com/',
CURLOPT_POSTFIELDS => $data,
); ($ch, $options);
$content =curl_exec($ch);
$err =curl_errno($ch);
$errmsg =curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
return $content;
}
短縮アドレスが間違っていますので、確認してください。
-----解決策---------
正規表現で取得できませんこのセクションには $urlbd = '$bb[0]' もあります。このように $urlbd の値を文字列 $bb[0] として定義します。
解析するには二重引用符を使用する必要があります。内の変数を次の preg_match("/]*>.*/i に置き換えます。 ", $aa, $bb );$urlbd = $bb[1];
------解決策------------------
今、csdn がまた怖くなってきました。
www.csdn.net/123456 のこのセクションをインターセプトする方法
このセクションは www.csdn.net/123456
www.csdn.net/123456 ?
その場合、短縮 URL ではありません。他にも方法はあります。 URL の状況は、とりあえずこのように書きましょう
$str='www.csdn.net/123456ここをクリック';
preg_match(' /^([a-zd./]+)$urlStr=$match[1];
echo $urlStr;
結果
www.csdn.net/123456
------解決策---------
www.csdn.net/123456ここをクリック
インターセプトする必要がある文字がすべて $s1 $strArray =explode("
------解決策------------------
つまり、
php プログラムから文字列 $longurl を呼び出しますこの $longurl エコーの結果は、
www.csdn.net/123456ここをクリック
この中の $longurl 文字列はすべて {url address...} のようなものですか? そうであれば、ルールを使用できます。 PHP の文字列区切り関数を使用して区切り、配列を返します。
$strArray =explode("print_r($strArray);結果