ไดเรกทอรีบทความ
WordPress ข้อผิดพลาด PHP อาจเกิดจากช่องว่างผี!
สิ่งที่โปรแกรมเมอร์กลัวมากที่สุดไม่ใช่ข้อบกพร่อง แต่เป็นการถูกข้อบกพร่องมาเล่นงานอารมณ์ของพวกเขา
ตรรกะที่คุณเขียนนั้นดีอยู่แล้ว แต่ PHP ช่วยให้คุณ syntax errorมันเหมือนกับว่าคุณไปเดทสายสามนาที แล้วอีกฝ่ายก็หันหน้าหนีแล้วพูดว่า "คุณไม่รักฉัน" คุณรู้สึกผิดมากจนอยากจะขว้างคีย์บอร์ดทิ้ง

เหตุใด WordPress PHP จึงรายงานข้อผิดพลาด?
คำกระตุ้นที่ PHP ให้มาคือ:
syntax error, unexpected single-quoted string "wpturbo_handle_upload_convert_...", expecting ")"
เมื่อแปลเป็นภาษามนุษย์ หมายความว่า ฉันคาดว่าจะมีวงเล็บปิด แต่คุณกลับยัดตัวอักษรแปลกๆ เข้ามาในตัวฉัน พร้อมกับอารมณ์ที่อธิบายไม่ได้
แล้วปัญหาคืออะไร? มันไม่ใช่ตรรกะฟังก์ชันของคุณ แต่เป็นบรรทัดที่ดูไม่เป็นอันตราย:
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
พื้นที่ผีในโค้ด
แก่นของปัญหาคือเมื่อคุณคัดลอกและวางโค้ด คุณผสม พื้นที่เต็มความกว้าง หรือ ช่องว่างความกว้างศูนย์.
สิ่งเหล่านี้จะมองไม่เห็นด้วยตาเปล่าในโปรแกรมแก้ไข แต่จะทำให้ PHP ทำงานหนักเมื่อทำการวิเคราะห์
มันเหมือนกับการกินบะหมี่แสนอร่อยในชามเดียว แต่ทันใดนั้นคุณก็กัดเม็ดทรายเข้าไป การป้องกันของคุณก็พังทลายลงทันที นี่คือความรู้สึกของ PHP ในตอนนี้
ต้องเขียนอย่างไรให้ถูกต้อง?
สิ่งที่คุณต้องทำนั้นง่ายมากจริงๆ แทนที่ช่องว่างทั้งหมด และคงช่องว่างครึ่งความกว้างที่บริสุทธิ์ที่สุดไว้
โค้ด WordPress ที่ถูกต้องเป็นดังต่อไปนี้:
add_filter('wp_handle_upload', 'wpturbo_handle_upload_convert_to_webp');
function wpturbo_handle_upload_convert_to_webp($upload) {
if (in_array($upload['type'], ['image/jpeg', 'image/png', 'image/gif'])) {
$file_path = $upload['file'];
if (extension_loaded('imagick') || extension_loaded('gd')) {
$image_editor = wp_get_image_editor($file_path);
if (!is_wp_error($image_editor)) {
// Set WebP quality (adjust as needed)
$quality = 80; // Adjust between 0 (low) to 100 (high)
$image_editor->set_quality($quality);
$file_info = pathinfo($file_path);
$dirname = $file_info['dirname'];
$filename = $file_info['filename'];
$def_filename = wp_unique_filename($dirname, $filename . '.webp');
$new_file_path = $dirname . '/' . $def_filename;
$saved_image = $image_editor->save($new_file_path, 'image/webp');
if (!is_wp_error($saved_image) && file_exists($saved_image['path'])) {
$upload['file'] = $saved_image['path'];
$upload['url'] = str_replace(basename($upload['url']), basename($saved_image['path']), $upload['url']);
$upload['type'] = 'image/webp';
@unlink($file_path);
}
}
}
}
return $upload;
}
如何避免这种情况?
คุณอาจสงสัยว่าคุณต้องกังวลทุกครั้งที่คัดลอกและวางหรือเปล่า คำตอบคือ อย่าตื่นตระหนก แต่จงฉลาด
- ใช้โปรแกรมแก้ไขที่เชื่อถือได้ เช่น VS Code ซึ่งสามารถเน้นอักขระแปลก ๆ ได้โดยอัตโนมัติ
- เมื่อเปิดไฟล์ ให้ลองบันทึกด้วยการเข้ารหัส UTF-8 ซึ่งสามารถลดความเสี่ยงของ "สัญลักษณ์ผี" ลงได้ครึ่งหนึ่ง
- หากคุณกังวลจริงๆ ให้วางโค้ดที่น่าสงสัยลงในเครื่องมือข้อความธรรมดาและทำความสะอาด
เช่นเดียวกับการล้างผักก่อนรับประทานหม้อไฟ ก็สามารถหลีกเลี่ยงอุบัติเหตุได้หลายประการ
ถ้อยคำส
ข้อผิดพลาดนี้อาจดูลึกลับ แต่ตรรกะของมันนั้นชัดเจนมาก การเขียนโปรแกรมก็เหมือนกับการเขียนบทกวี เครื่องหมายวรรคตอนและการเว้นวรรคคือหัวใจสำคัญของจังหวะ การเว้นวรรคผิดเพียงครั้งเดียวก็อาจทำให้โค้ดผิดจังหวะได้ เหมือนกับเสียงทูบาที่เพี้ยนไปในวงออร์เคสตรา
เมื่อเขียนโค้ด เราต้องพัฒนา "สัญลักษณ์ที่สะอาด" ขึ้นมา การทำให้รายละเอียดสมบูรณ์แบบเท่านั้นที่จะทำให้ตรรกะทำงานได้อย่างราบรื่นปรัชญาในแง่หนึ่ง นี่ก็เป็นการแสวงหาความแม่นยำและความเป็นระเบียบเช่นกัน
总结
มีจุดสำคัญสามประการ:
- ข้อผิดพลาดนี้ไม่ใช่ปัญหาตรรกะ แต่เป็นพื้นที่ว่าง
- การแก้ไขที่ถูกต้องคือการแทนที่ด้วยช่องว่างครึ่งความกว้างมาตรฐาน
- พัฒนาโค้ดให้สะอาดและอยู่ห่างจากอักขระที่ซ่อนอยู่
ดังนั้น ครั้งต่อไปที่คุณเจอข้อผิดพลาดที่ดูเหมือนจะอธิบายไม่ได้ คุณก็ควรตั้งคำถามว่า: มี "ผี" ที่มองไม่เห็นกำลังทำงานอยู่หรือเปล่า? ลงมือทำ กำจัดมันออกไป แล้วโค้ดของคุณก็จะทำงานได้อย่างราบรื่น
หวัง Chen Weiliang บล็อก ( https://www.chenweiliang.com/ ) แชร์ "ข้อผิดพลาดทางไวยากรณ์ของ WordPress: คำแนะนำที่สมบูรณ์แบบสำหรับการแก้ไขสตริงที่มีเครื่องหมายคำพูดเดี่ยวที่ไม่คาดคิด" ซึ่งอาจเป็นประโยชน์กับคุณ
ยินดีต้อนรับสู่การแบ่งปันลิงค์ของบทความนี้:https://www.chenweiliang.com/cwl-33245.html
หากต้องการปลดล็อคเคล็ดลับที่ซ่อนอยู่เพิ่มเติม ยินดีต้อนรับเข้าร่วมช่อง Telegram ของเรา!
แชร์และกดไลค์ถ้าคุณชอบ! การแชร์และการถูกใจของคุณคือแรงบันดาลใจอย่างต่อเนื่องของเรา!