ฉันจะลบบางส่วนของสตริงได้อย่างไร
สตริงตัวอย่าง: "REGISTER 11223344 here"
ฉันจะลบออก"11223344"
จากสตริงตัวอย่างข้างต้นได้อย่างไร
REGISTER here
ในฐานข้อมูล
ฉันจะลบบางส่วนของสตริงได้อย่างไร
สตริงตัวอย่าง: "REGISTER 11223344 here"
ฉันจะลบออก"11223344"
จากสตริงตัวอย่างข้างต้นได้อย่างไร
REGISTER here
ในฐานข้อมูล
คำตอบ:
หากคุณกำหนดเป้าหมายเป็น "11223344" โดยเฉพาะให้ใช้str_replace
:
// str_replace($search, $replace, $subject)
echo str_replace("11223344", "","REGISTER 11223344 here");
คุณสามารถใช้str_replace ()ซึ่งถูกกำหนดเป็น:
str_replace($search, $replace, $subject)
ดังนั้นคุณสามารถเขียนรหัสเป็น:
$subject = 'REGISTER 11223344 here' ;
$search = '11223344' ;
$trimmed = str_replace($search, '', $subject) ;
echo $trimmed ;
หากคุณต้องการจับคู่ที่ดีขึ้นผ่านการแสดงออกปกติคุณสามารถใช้preg_replace ()
สมมติว่า 11223344 นั้นไม่คงที่
$string="REGISTER 11223344 here";
$s = explode(" ",$string);
unset($s[1]);
$s = implode(" ",$s);
print "$s\n";
str_replace(find, replace, string, count)
ตามตัวอย่าง OP:
$Example_string = "REGISTER 11223344 here";
$Example_string_PART_REMOVED = str_replace('11223344', '', $Example_string);
// will leave you with "REGISTER here"
// finally - clean up potential double spaces, beginning spaces or end spaces that may have resulted from removing the unwanted string
$Example_string_COMPLETED = trim(str_replace(' ', ' ', $Example_string_PART_REMOVED));
// trim() will remove any potential leading and trailing spaces - the additional 'str_replace()' will remove any potential double spaces
// will leave you with "REGISTER here"
เมื่อคุณต้องการจับคู่ตามกฎคุณต้องใช้ regex
$string = "REGISTER 11223344 here";
preg_match("/(\d+)/", $string, $match);
$number = $match[1];
ซึ่งจะตรงกับตัวเลขชุดแรกดังนั้นหากคุณต้องลองแบบเจาะจงมากขึ้น:
$string = "REGISTER 11223344 here";
preg_match("/REGISTER (\d+) here/", $string, $match);
$number = $match[1];
$match
อาร์เรย์ออกโดยไม่จำเป็น ลบวงเล็บแล้ว acces $match[0]
ผ่าน
substr () เป็นฟังก์ชัน php ในตัวซึ่งคืนค่าส่วนหนึ่งของสตริง substr ฟังก์ชั่น () จะใช้สตริงเป็นอินพุตในรูปแบบดัชนีที่คุณต้องการสตริงที่จะถูกตัดแต่ง และพารามิเตอร์ทางเลือกคือความยาวของสตริงย่อย คุณสามารถดูเอกสารที่เหมาะสมและรหัสตัวอย่างได้ที่http://php.net/manual/th/function.substr.php
หมายเหตุ: ดัชนีสำหรับสตริงเริ่มต้นด้วย 0
แบบไดนามิกหากคุณต้องการลบ (a) ส่วน (s) จาก (a) ดัชนีคงที่ (es) ของสตริงใช้ฟังก์ชั่นนี้:
/**
* Removes index/indexes from a string, using a delimiter.
*
* @param string $string
* @param int|int[] $index An index, or a list of indexes to be removed from string.
* @param string $delimiter
* @return string
* @todo Note: For PHP versions lower than 7.0, remove scalar type hints (i.e. the
* types before each argument) and the return type.
*/
function removeFromString(string $string, $index, string $delimiter = " "): string
{
$stringParts = explode($delimiter, $string);
// Remove indexes from string parts
if (is_array($index)) {
foreach ($index as $i) {
unset($stringParts[(int)($i)]);
}
} else {
unset($stringParts[(int)($index)]);
}
// Join all parts together and return it
return implode($delimiter, $stringParts);
}
เพื่อจุดประสงค์ของคุณ:
remove_from_str("REGISTER 11223344 here", 1); // Output: REGISTER here
หนึ่งในประเพณีคือการใช้งานคำสั่งที่เหมือนคำสั่งซึ่งคุณรู้จักโครงสร้างของมัน
ตัวอย่างต่อไปนี้จะพิมพ์ "ลงทะเบียนที่นี่"
$string = "REGISTER 11223344 here";
$result = preg_replace(
array('/(\d+)/'),
array(''),
$string
);
print_r($result);
preg_replace () API ใช้งานเราตามที่ได้รับด้านล่าง
$result = preg_replace(
array('/pattern1/', '/pattern2/'),
array('replace1', 'replace2'),
$input_string
);
preg_replace()
ในกรณีนี้ ไม่มีประโยชน์ใด ๆ ในการใช้กลุ่มการจับกุม
ทำดังต่อไปนี้
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER(.*)here/','',$string);
สิ่งนี้จะส่งคืน "ลงทะเบียนที่นี่"
หรือ
$string = 'REGISTER 11223344 here';
$content = preg_replace('/REGISTER (.*) here/','',$string);
สิ่งนี้จะส่งกลับ "ลงทะเบียนที่นี่"
remove
แต่ดูเหมือนว่าคุณจะหมายถึงextract
เพื่อให้สามารถเก็บสตริงเป้าหมายในฐานข้อมูล