私はこの正規表現#^https?://twitter\.com/(?:\#!/)?(\w+)/status(es)?/(\d+)$#is
正規表現:URL
とメッセージで、見つかった場合は、つぶやきのURLを取得しようとしているから、ツイートのユーザー名とIDを抽出しかし、私の正規表現は、つぶやきのURLのためにフェッチすることは正しくないようです。以下は、パターンが最初から最後まで一致しなければならないことを意味し、あなたの正規表現でanchorsを含めているので、あなたが期待するよう、これは動作しないでしょう理由は私の完全なコード
function gettweet($string)
{
$regex = '#^https?://twitter\.com/(?:\#!/)?(\w+)/status(es)?/(\d+)$#is';
$string = preg_replace_callback($regex, function($matches) {
$user = $matches[2];
$statusid = $matches[3];
$url = "https://twitter.com/$user/status/$statusid";
$urlen = urlencode($url);
$getcon = file_get_contents("https://publish.twitter.com/oembed?url=$urlen");
$con = json_decode($getcon, true);
$tweet_html = $con["html"];
return $tweet_html;
}, $string);
return $string;
}
$message="This is absolutely trending can you also see it here https://twitter.com/itslifeme/status/765268556133064704 i like it";
$mes=gettweet($message);
echo $mes;
ありがとうございました。正規表現は完全に動作しますが、これを解析するとjsonからの応答はありませんでした。 $ getcon = file_get_contents( "https://publish.twitter.com/oembed?url=$urlen"); $ con = json_decode($ getcon、true); $ getva = $ con ["url"]; –
「json_decode」はnullを返していますが、[マニュアルにしたがって](http://php.net/json-decode)は失敗を示していますか?それとも、 'file_get_contents'自体が' false'を返したのですか?(マニュアルに従って)(http://php.net/file-get-contents)は失敗を示していますか?コード内でエラー処理を何もしないでください。あなたのコードが毎回完璧に動作するはずであると信じているとき、あなたのコードがここでは予想外に失敗することは、珍しいことでも予期しないことでもありません。 – Sherif
あなたのお返事ありがとうSherif。 PHP初心者です。 json_decodeはnullを返していますが、解析されたツイートのURLは有効です。完璧な結果を得るための最善の方法で私を助けてください。私はjson配列から 'html'を出力し、私のウェブサイトに埋め込みツイートとして表示したいと思います。ありがとう –