it-swarm.asia

كيف يمكنني تصفية Microsoft Word gunk من المحتوى الذي تم لصقه؟

لديّ بعض المستخدمين الذين ينشرون في مدونة جماعية ويمكنهم القص واللصق ، لكن معالجاتهم تتضمن أشياء مثل:

<!– /* Font Definitions */ @font-face {font-family:”Cambria Math”; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520092929 1073786111 9 0 415 0;} @font-face {font-family:”Trebuchet MS”; panose-1:2 11 6 3 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:”"; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:0in; line-height:115%; mso-pagination:Widow-Orphan; font-size:12.0pt; font-family:”Trebuchet MS”,”sans-serif”; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; color:black;} p {mso-style-noshow:yes; mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:Widow-Orphan; font-size:12.0pt; font-family:”Times New Roman”,”serif”; mso-fareast-font-family:”Times New Roman”;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:12.0pt; mso-ansi-font-size:12.0pt; mso-bidi-font-size:12.0pt; mso-ascii-font-family:”Trebuchet MS”; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:”Trebuchet MS”; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; color:black;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} –>

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:”";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:Widow-Orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:”Times New Roman”;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}

ما الذي يمكنني فعله لتصفية الكود مثل هذا تلقائيًا؟

3
artlung

يوجد زر في محرر النصوص المرئية مضمّن في WordPress والذي سيؤدي إلى تجريد تنسيق Microsoft Word. هو المسمى "لصق من كلمة" alt text

8
Chris_O

أود أن أقترح استخدام البرنامج المساعد TinyMCE Advanced المساعد. يتيح لك إضافة خيار "لصق من Word" الذي يعتني بكل ذلك نيابةً عنك.

ومع ذلك ، إذا لم تكن مهتمًا بذلك ، فلديك بعض الخيارات الإضافية. مثله:

function get_rid_of_mso_junk( $content ){
  return preg_replace( '@(mso|panose)[^:]{1,25}:[^;]+;(\s+)?(\n+)[email protected]', '', $content );
}

add_filter( 'content_save_pre', 'get_rid_of_mso_junk' );

ما عليك سوى الاستمرار في إضافة إعلانات غير مرغوب فيها إلى مجموعة الالتقاط الأولى في ذلك regex لإضافة خطوط يجب إزالتها. على سبيل المثال: (mso|panose|other-junk|annoyance).

5
John P Bloch

لأي شخص يبحث عن حل لهذه المشكلة ، لقد فعلت شيئًا كهذا:

function delete_between($beginning, $end, $string) {
    $beginningPos = strpos($string, $beginning);
    $endPos = strpos($string, $end);
    if (!$beginningPos || !$endPos) {
    return $string;
    }

    $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);

    return str_replace($textToDelete, '', $string);
}

function clean_content( $content ){
    if( is_home() || is_single()){
        $content = delete_between('<!--[if gte mso', ';}', $content);   
        return $content;
    }else{
    return $content;
}

add_filter( 'the_content', 'clean_content' );
add_filter( 'the_excerpt', 'clean_content' );

يمكنك استبدال السلاسل في دالة delete_between بأي شيء تريده. يبدو أن العمل بالنسبة لي رغم ذلك.

2
codeprokanner

لقد عملت مع العملاء الذين يواجهون هذه المشكلة كثيرًا. الخدعة ، التي وجدتها ، تتمثل في النسخ واللصق في عرض HTML ثم التبديل مرة أخرى إلى محرر Visual إلى تنسيق القرص إذا لزم الأمر.

هذا ضروري أيضًا في حالة لصق النسخ من موقع ويب آخر. في بعض الأحيان ، تقوم بطريق الخطأ بسحب تعريفات الفصل والتصميم المباشر من المصدر الخارجي ويمكن أن يكسر العرض إذا لم يكن لديك نفس الفئات أو الأنماط التي تم إعدادها أو دعمها بواسطة موقعك.

هناك خيار آخر يتمثل في عرض المستخدمين على Windows Live Writer . إنه منتج Microsoft مجاني تمامًا ، ويتم تشغيله بشكل جيد مع لصق النسخ من Word ، ويمكنه التفاعل مع WordPress - تكتب المنشور ، وتحرر المنشور ، وتستخدم المدقق الإملائي المدمج ، وتنسيق المنشور لعرضهبالضبطكيف تريد ، ثم انقر فوق "نشر" لدفع رسالتك إلى وورد عبر XMLRPC. إنه نظام سليم إلى حد ما يجعلهبشكل لا يصدقسهلًا لتدريس مدون لأول مرة كيفية التدوين ... خاصة وأن واجهة المستخدم تشبه Word لتبدأ.

2
EAMann