ฉันมีสคริปต์ PHP ที่ผู้ใช้จะป้อนชื่อเช่น: Alex_Newton
,
อย่างไรก็ตามผู้ใช้บางคนจะใช้ช่องว่างมากกว่าขีดล่างดังนั้นคำถามของฉันคือ:
ฉันจะแทนที่ช่องว่างอัตโนมัติด้วยขีดล่างใน PHP ได้อย่างไร
ฉันมีสคริปต์ PHP ที่ผู้ใช้จะป้อนชื่อเช่น: Alex_Newton
,
อย่างไรก็ตามผู้ใช้บางคนจะใช้ช่องว่างมากกว่าขีดล่างดังนั้นคำถามของฉันคือ:
ฉันจะแทนที่ช่องว่างอัตโนมัติด้วยขีดล่างใน PHP ได้อย่างไร
คำตอบ:
$name = str_replace(' ', '_', $name);
ตามที่คนอื่น ๆ ได้อธิบายถึงวิธีการใช้str_replace
งานคุณสามารถใช้ regex เพื่อทำสิ่งนี้
$name = preg_replace('/\s+/', '_', $name);
$name = str_replace(' ', '_', $name);
โทรhttp://php.net/str_replace :$input = str_replace(' ', '_', $input);
ใช้str_replace :
str_replace(" ","_","Alex Newton");
คุณสามารถทำเช่นนี้เพื่อป้องกันไม่ให้คำเริ่มต้นหรือลงท้ายด้วยเครื่องหมายขีดล่างเช่น _words_more_words_ ซึ่งจะหลีกเลี่ยงการเริ่มต้นและสิ้นสุดด้วยการเว้นวรรคสีขาว
$trimmed = trim($string); // Trims both ends
$convert = str_replace('', '_', $trimmed);
นี่เป็นส่วนหนึ่งของรหัสของฉันซึ่งทำให้มีช่องว่างเป็นขีดล่างสำหรับตั้งชื่อไฟล์ของฉัน:
$file = basename($_FILES['upload']['name']);
$file = str_replace(' ','_',$file);
ฉันใช้สิ่งนี้
$option = trim($option);
$option = str_replace(' ', '_', $option);
คุณสามารถใช้str_replace
พูดชื่อของคุณเป็นตัวแปร$name
$result = str_replace(' ', '_', $name);
อีกวิธีหนึ่งคือการใช้ regex ซึ่งจะช่วยกำจัดพื้นที่ 2 เวลา ฯลฯ
$result= preg_replace('/\s+/', '_', $name);
Strtr
แทนที่อักขระเดี่ยวแทนสตริงดังนั้นจึงเป็นทางออกที่ดีสำหรับตัวอย่างนี้ คาดว่าstrtr
จะเร็วกว่าstr_replace
(แต่สำหรับกรณีการใช้งานนี้พวกเขาทั้งสองอย่างรวดเร็วอย่างล้นหลาม)
echo strtr('Alex Newton',' ','_');
//outputs: Alex_Newton
str_replace
- มันเป็นทางออกที่ชัดเจน แต่บางครั้งคุณต้องรู้ว่าช่องว่างตรงนั้นมีอะไรบ้าง ฉันมีปัญหากับช่องว่างจากไฟล์ csv
มีสองตัวอักษร แต่หนึ่งในนั้นคือ 0160 (0x0A0) และอื่น ๆ ก็มองไม่เห็น (0x0C2)
ทางออกสุดท้ายของฉัน:
$str = preg_replace('/\xC2\xA0+/', '', $str);
ฉันพบสัญลักษณ์ที่มองไม่เห็นจากตัวแสดง HEX จาก mc (ตัวแสดงเวลาเที่ยงคืน - F3 - F9)
'/\s+/'
อะไร