목차
1. 질문:
백엔드 개발 PHP 튜토리얼 PHP가 여러 사진이 포함된 그래픽 메시지를 WeChat 공개 플랫폼에 업로드할 때 콘텐츠 손실 문제를 어떻게 해결합니까?

PHP가 여러 사진이 포함된 그래픽 메시지를 WeChat 공개 플랫폼에 업로드할 때 콘텐츠 손실 문제를 어떻게 해결합니까?

Aug 08, 2016 am 09:06 AM
php 위챗 위챗 공개 플랫폼

1. 질문:
WordPress의 기사를 WeChat에 영구 자료로 업로드합니다.
기사에 사진이 하나만 있는 경우 정상적으로 업로드할 수 있으며, WeChat 공개 플랫폼에서 이 자료를 볼 때 , 텍스트 내용과 그림을 완전히 표시할 수 있습니다.
기사에 다른 사진을 추가하세요(기사 사진이 1보다 큰 경우). WeChat 배경에서 이 자료를 볼 때 기사가 불완전한 것으로 확인됩니다. 첫 번째 사진부터 시작하는 모든 내용이 손실됩니다.
추가 참고사항:
(1) 저는 WordPress 기사를 WeChat 자료 라이브러리에 업로드하기 위한 플러그인을 작성했습니다.
주요 프로세스: 컬은 기사의 이미지를 가져와 WeChat 자료 라이브러리에 업로드하고, URL을 얻은 다음 이에 따라 wordpress 기사의 이미지 src를 바꿉니다.
그런 다음 이미지와 문자 메시지의 json 문자열을 구성하여 WeChat에 업로드하세요.
(2) WordPress 기사에는 스타일이 추가되지 않으며

, 태그만 추가됩니다.
2, 코드:

<code>// 上传图文消息代码
$raw = Curl::curl_post_wx( 'https://api.weixin.qq.com/cgi-bin/material/add_news?access_token='
    . $token, self::json_article( $post_ids, $token ), false );

/**
 * 将文章内容构造成json字符串
 *
 * @param array $post_ids
 * @param string $token
 * @return string json
 */
private function json_article( $post_ids, $token ) {
    $mp_article = '{"articles":[';
    foreach ( $post_ids as $post_id ) {
        $post = get_post( $post_id );
        $post_urls = self::preg_match_src( $post->post_content );
        if ( $post_urls ) {
            // 如果文章中有图片,将文章中的图片上传至微信素材库
            foreach ( $post_urls as $post_url ) {
                if ( strpos( $post_url, 'qpic.cn' ) === false ) {
                    // 如果图片没有上传到微信服务器
                    $res = Curl::curl_post_wx( 'https://api.weixin.qq.com/cgi-bin/material/add_material?'
                        . 'access_token=' . $token . '&type=image', false, Curl::curl_get_img( $post_url ) );
                    //替换文章内容img中的src地址
                    $post->post_content = str_replace( $post_url, $res['url'], $post->post_content );
                }
                $post->post_content = str_replace( '"', '\"', $post->post_content );
            }
        }

        // 获取缩略图并上传
        // 相应的code省略

        // 构造json
        $mp_article .= '{
            "title": "' . $post->post_title . '",
            "content_source_url": "' . get_permalink( $post_id, false ) . '",
            "thumb_media_id": "' . $thumb_res['media_id'] . '",
            "content": "' . htmlspecialchars_decode( $post->post_content ) . '",
            "show_cover_pic": 0,
        ';
        if ( !empty($post->post_excerpt ) ) {
            $mp_article .= '"digest": "' . $post->post_excerpt . '",';
        }
        $mp_article .= '},';
    }

    return rtrim($mp_article, ',') . ']}';
}</code>
로그인 후 복사
로그인 후 복사

3. 오류 메시지: WeChat이 오류 메시지를 반환하지 않았습니다.
4, 스크린샷: 없음.
5, 기타 참고 자료:
CSDN에서 tilun_099가 비슷한 문제에 직면한 것을 보았습니다: http://bbs.csdn.net/topics/39....
tilun_099의 문제점은 다음과 같습니다. "다중 이미지 및 텍스트 자료를 업로드할 때 콘텐츠 내용이 일반 텍스트이면 업로드에 성공할 수 있고 media_id를 얻을 수 있으며 그룹 전송 인터페이스를 통해 휴대폰에서는 다중 이미지 및 텍스트 정보를 올바르게 얻을 수 있습니다. 그러나 콘텐츠에

,

등과 같은 html 태그가 포함된 경우 media_id는 업로드 후에 얻을 수 있습니다. , 대량 전송 후 휴대폰에는 단일 이미지와 텍스트가 포함되며, 이 단일 이미지와 텍스트에는 사진과 제목이 포함됩니다. 즉, 내용이 비어 있습니다. 그의 문제: "아무도 대답하지 않았지만 콘텐츠에 html 태그가 포함되어 있으면 마침내 문제를 해결했습니다. 그렇다면 콘텐츠를 이스케이프해야 합니다. 콘텐츠에 style=".." 및 ""가 포함된 콘텐츠가 있으면 비용을 지불해야 합니다. 그것에 더 많은 관심을 기울이십시오.

urlencoding을 수행할 때 태그가 영향을 받지 않도록 html의 "" 따옴표를 먼저 작은따옴표로 변환한 다음 이를 html 엔터티로 변환해야 합니다.
<code>foreach ($news as &$item){
    foreach ($item as $k=>$v){
        if($k =='content'){
            $item[$k] = urlencode(htmlspecialchars(str_replace("\"","'",$v)));
            }else{
                $item[$k] = urlencode($v);
            }
        }
    }</code>
로그인 후 복사
로그인 후 복사

업로드하기 전에 콘텐츠를 urldecode하고 html 엔터티를 html 태그로 변환하면 괜찮습니다.
<code>$data=array("articles"=>$news);
    $data=json_encode($data);
    $end_data= urldecode($data);
    $end_data= htmlspecialchars_decode($end_data);</code>
로그인 후 복사
로그인 후 복사
테스트 완료! ”


그와 내가 직면한 문제는 다소 유사하지만 json을 직접 구성한 것과 완전히 똑같지는 않습니다.

답글 내용:

1. 질문:

WordPress의 기사를 WeChat에 영구 자료로 업로드합니다.

기사에 사진이 하나만 있는 경우 정상적으로 업로드할 수 있으며, WeChat 공개 플랫폼에서 이 자료를 볼 때 , 텍스트 내용과 그림을 완전히 표시할 수 있습니다.
기사에 다른 사진을 추가하세요(기사 사진이 1보다 큰 경우). WeChat 배경에서 이 자료를 볼 때 기사가 불완전한 것으로 확인됩니다. 첫 번째 사진부터 시작하는 모든 내용이 손실됩니다.
추가 참고사항:
(1) 저는 WordPress 기사를 WeChat 자료 라이브러리에 업로드하기 위한 플러그인을 작성했습니다.
주요 프로세스: 컬은 기사의 이미지를 가져와 WeChat 자료 라이브러리에 업로드하고, URL을 얻은 다음 이에 따라 wordpress 기사의 이미지 src를 바꿉니다.
그런 다음 이미지와 문자 메시지의 json 문자열을 구성하여 WeChat에 업로드하세요.
(2) WordPress 기사에는 스타일이 추가되지 않으며

, 태그만 추가됩니다.
2, 코드:

3. 오류 메시지: WeChat이 오류 메시지를 반환하지 않았습니다.
<code>// 上传图文消息代码
$raw = Curl::curl_post_wx( 'https://api.weixin.qq.com/cgi-bin/material/add_news?access_token='
    . $token, self::json_article( $post_ids, $token ), false );

/**
 * 将文章内容构造成json字符串
 *
 * @param array $post_ids
 * @param string $token
 * @return string json
 */
private function json_article( $post_ids, $token ) {
    $mp_article = '{"articles":[';
    foreach ( $post_ids as $post_id ) {
        $post = get_post( $post_id );
        $post_urls = self::preg_match_src( $post->post_content );
        if ( $post_urls ) {
            // 如果文章中有图片,将文章中的图片上传至微信素材库
            foreach ( $post_urls as $post_url ) {
                if ( strpos( $post_url, 'qpic.cn' ) === false ) {
                    // 如果图片没有上传到微信服务器
                    $res = Curl::curl_post_wx( 'https://api.weixin.qq.com/cgi-bin/material/add_material?'
                        . 'access_token=' . $token . '&type=image', false, Curl::curl_get_img( $post_url ) );
                    //替换文章内容img中的src地址
                    $post->post_content = str_replace( $post_url, $res['url'], $post->post_content );
                }
                $post->post_content = str_replace( '"', '\"', $post->post_content );
            }
        }

        // 获取缩略图并上传
        // 相应的code省略

        // 构造json
        $mp_article .= '{
            "title": "' . $post->post_title . '",
            "content_source_url": "' . get_permalink( $post_id, false ) . '",
            "thumb_media_id": "' . $thumb_res['media_id'] . '",
            "content": "' . htmlspecialchars_decode( $post->post_content ) . '",
            "show_cover_pic": 0,
        ';
        if ( !empty($post->post_excerpt ) ) {
            $mp_article .= '"digest": "' . $post->post_excerpt . '",';
        }
        $mp_article .= '},';
    }

    return rtrim($mp_article, ',') . ']}';
}</code>
로그인 후 복사
로그인 후 복사
4, 스크린샷: 없음.

5, 기타 참고 자료:
CSDN에서 tilun_099가 비슷한 문제에 직면한 것을 보았습니다: http://bbs.csdn.net/topics/39....
tilun_099의 문제점은 다음과 같습니다. "다중 이미지 및 텍스트 자료를 업로드할 때 콘텐츠 내용이 일반 텍스트이면 업로드에 성공할 수 있고 media_id를 얻을 수 있으며 그룹 전송 인터페이스를 통해 휴대폰에서는 다중 이미지 및 텍스트 정보를 올바르게 얻을 수 있습니다. 그러나 콘텐츠에

,

등과 같은 html 태그가 포함된 경우 media_id는 업로드 후에 얻을 수 있습니다. , 대량 전송 후 휴대폰에는 단일 이미지와 텍스트가 포함되며, 이 단일 이미지와 텍스트에는 사진과 제목이 포함됩니다. 즉, 내용이 비어 있습니다. 그의 문제: "아무도 대답하지 않았지만 콘텐츠에 html 태그가 포함되어 있으면 마침내 문제를 해결했습니다. 그렇다면 콘텐츠를 이스케이프해야 합니다. 콘텐츠에 style=".." 및 ""가 포함된 콘텐츠가 있으면 비용을 지불해야 합니다. 그것에 더 많은 관심을 기울이십시오.

urlencoding을 수행할 때 태그가 영향을 받지 않도록 html의 "" 따옴표를 먼저 작은따옴표로 변환한 다음 이를 html 엔터티로 변환해야 합니다.

<code>foreach ($news as &$item){
    foreach ($item as $k=>$v){
        if($k =='content'){
            $item[$k] = urlencode(htmlspecialchars(str_replace("\"","'",$v)));
            }else{
                $item[$k] = urlencode($v);
            }
        }
    }</code>
로그인 후 복사
로그인 후 복사
업로드하기 전에 콘텐츠를 urldecode하고 html 엔터티를 html 태그로 변환하면 괜찮습니다.

테스트 완료! ”

<code>$data=array("articles"=>$news);
    $data=json_encode($data);
    $end_data= urldecode($data);
    $end_data= htmlspecialchars_decode($end_data);</code>
로그인 후 복사
로그인 후 복사
그와 내가 직면한 문제는 다소 유사하지만 json을 직접 구성한 것과 완전히 똑같지는 않습니다.

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. JWT (JSON Web Tokens) 및 PHP API의 사용 사례를 설명하십시오. Apr 05, 2025 am 12:04 AM

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

PHP에서 늦은 정적 결합을 설명하십시오 (정적 : :). PHP에서 늦은 정적 결합을 설명하십시오 (정적 : :). Apr 03, 2025 am 12:04 AM

정적 바인딩 (정적 : :)는 PHP에서 늦은 정적 바인딩 (LSB)을 구현하여 클래스를 정의하는 대신 정적 컨텍스트에서 호출 클래스를 참조 할 수 있습니다. 1) 구문 분석 프로세스는 런타임에 수행됩니다. 2) 상속 관계에서 통화 클래스를 찾아보십시오. 3) 성능 오버 헤드를 가져올 수 있습니다.

php magic 방법 (__construct, __destruct, __call, __get, __set 등)이란 무엇이며 사용 사례를 제공합니까? php magic 방법 (__construct, __destruct, __call, __get, __set 등)이란 무엇이며 사용 사례를 제공합니까? Apr 03, 2025 am 12:03 AM

PHP의 마법 방법은 무엇입니까? PHP의 마법 방법은 다음과 같습니다. 1. \ _ \ _ Construct, 객체를 초기화하는 데 사용됩니다. 2. \ _ \ _ 파괴, 자원을 정리하는 데 사용됩니다. 3. \ _ \ _ 호출, 존재하지 않는 메소드 호출을 처리하십시오. 4. \ _ \ _ get, 동적 속성 액세스를 구현하십시오. 5. \ _ \ _ Set, 동적 속성 설정을 구현하십시오. 이러한 방법은 특정 상황에서 자동으로 호출되어 코드 유연성과 효율성을 향상시킵니다.

Ouyi Exchange App 국내 다운로드 자습서 Ouyi Exchange App 국내 다운로드 자습서 Mar 21, 2025 pm 05:42 PM

이 기사는 중국의 Ouyi Okx 앱의 안전한 다운로드에 대한 자세한 안내서를 제공합니다. 국내 앱 스토어의 제한으로 인해 사용자는 OUYI OKX의 공식 웹 사이트를 통해 앱을 다운로드하거나 공식 웹 사이트에서 제공 한 QR 코드를 사용하여 스캔 및 다운로드하는 것이 좋습니다. 다운로드 프로세스 중에 공식 웹 사이트 주소를 확인하고 응용 프로그램 권한을 확인하고 설치 후 보안 스캔을 수행하며 2 요인 확인을 활성화하십시오. 사용하는 동안 현지 법률 및 규정을 따르고, 안전한 네트워크 환경을 사용하고, 계정 보안을 보호하고, 사기에 대해 경계하고, 합리적으로 투자하십시오. 이 기사는 참조 용이며 투자 조언은 자신의 위험에 처해 있습니다.

매치 표현식 (PHP 8)과 스위치와 어떻게 다른지 설명하십시오. 매치 표현식 (PHP 8)과 스위치와 어떻게 다른지 설명하십시오. Apr 06, 2025 am 12:03 AM

PHP8에서 매치 표현식은 표현식의 값에 따라 다른 결과를 반환하는 새로운 제어 구조입니다. 1) 스위치 명령문과 유사하지만 실행 명령문 블록 대신 값을 반환합니다. 2) 경기 표현식은 엄격하게 비교되어 (===) 보안을 향상시킵니다. 3) 스위치 명세서에서 가능한 파손을 피하고 코드의 단순성과 가독성을 향상시킵니다.

회사의 보안 소프트웨어가 응용 프로그램과 충돌하는 경우 어떻게해야합니까? Hues Security 소프트웨어 문제를 해결하는 방법 공통 소프트웨어가 열리지 않습니까? 회사의 보안 소프트웨어가 응용 프로그램과 충돌하는 경우 어떻게해야합니까? Hues Security 소프트웨어 문제를 해결하는 방법 공통 소프트웨어가 열리지 않습니까? Apr 01, 2025 pm 10:48 PM

회사 보안 소프트웨어 및 응용 프로그램을위한 호환성 문제 및 문제 해결 방법. 많은 회사들이 인트라넷 보안을 보장하기 위해 보안 소프트웨어를 설치할 것입니다. 그러나 보안 소프트웨어 가끔 ...

Binance 가상 통화 구매 및 판매 방법에 대한 자세한 자습서 Binance 가상 통화 구매 및 판매 방법에 대한 자세한 자습서 Mar 18, 2025 pm 01:36 PM

이 기사는 2025 년에 업데이트 된 Binance Virtual Currency의 구매 및 판매에 대한 간단한 안내서를 제공하며 Binance 플랫폼에서 가상 통화 트랜잭션의 작동 단계를 자세히 설명합니다. 이 안내서는 Fiat 통화 구매 USDT, 기타 통화 (예 : BTC)의 통화 거래 구매 및 시장 거래 및 한도 거래를 포함한 판매 운영을 다룹니다. 또한이 안내서는 구체적으로 Fiat 통화 거래에 대한 지불 보안 및 네트워크 선택과 같은 주요 위험을 상기시켜 사용자가 Binance 거래를 안전하고 효율적으로 수행 할 수 있도록 도와줍니다. 이 기사를 통해 Binance 플랫폼에서 가상 통화를 구매 및 판매하는 기술을 신속하게 마스터하고 거래 위험을 줄일 수 있습니다.

PHP 함수 인수 및 배열 풀기에서 ... (SPLAT) 연산자의 목적과 사용을 설명하십시오. PHP 함수 인수 및 배열 풀기에서 ... (SPLAT) 연산자의 목적과 사용을 설명하십시오. Apr 06, 2025 am 12:07 AM

PHP의 ... (SPLAT) 연산자는 기능 매개 변수 및 배열을 포장하여 코드 단순성 및 효율성을 향상시키는 데 사용됩니다. 1) 함수 매개 변수 풀기 : 배열 요소를 함수로 매개 변수로 전달합니다. 2) 배열 풀기 : 배열을 다른 배열 또는 함수 매개 변수로 포장합니다.

See all articles