PHP में स्ट्रिंग के पहले चरित्र को कैसे हटाएं?


जवाबों:


330

:स्ट्रिंग की शुरुआत से प्रत्येक को हटाने के लिए , आप ltrim का उपयोग कर सकते हैं :

$str = '::f:o:';
$str = ltrim($str, ':');
var_dump($str); //=> 'f:o:'

109
ध्यान दें कि lrtim सभी को हटा देगा :::::। कभी-कभी यह वांछित व्यवहार नहीं है।
सीओआर

5
ध्यान दें कि यह केवल एकल वर्णों के लिए है। ltrim प्रदान किए गए स्ट्रिंग में सभी पात्रों को ट्रिम कर देगा: ltrim('prefixprefix_postfix', 'prefix')परिणाम'_postfix';
कोडी Django

556

substr()समारोह शायद तुम यहाँ मदद मिलेगी:

 $str = substr($str, 1);

स्ट्रिंग्स को 0 से शुरू किया जाता है, और यह फ़ंक्शन दूसरा पैरामीटर कटस्टार्ट लेता है। तो उस 1 को बनाओ, और पहला चर गया।


35
यूनिकोड के बारे में पता होना। यदि आप एक मनमाना स्ट्रिंग (जैसे "danishl <- ईट के साथ भाई") के साथ काम कर रहे हैं, तो आपको mb_substr का उपयोग करना चाहिए और एन्कोडिंग निर्दिष्ट करना चाहिए।
थॉमस जेन्सन

यह एक सही कार्यान्वयन नहीं है, यह एकल वर्ण स्ट्रिंग "a" के साथ काम नहीं कर रहा है। यदि आप एकल वर्ण स्ट्रिंग की कोशिश करते हैं, तो मूल बूलियन मान
लौटाता है

2
@anru मैनुअल कहता है कि यदि स्ट्रिंग की लंबाई स्टार्ट पैरामीटर के बराबर है, तो एक खाली स्ट्रिंग वापस आ जाएगी। संस्करण 7 से पहले, falseवापस कर दिया गया था। इसलिए आपको यह जाँचने की आवश्यकता होगी कि क्या वे समान हैं यदि वह ऐसा व्यवहार नहीं है जो आप चाहते हैं।
rybo111

95

उपयोग रूट :

$str = substr($str, 1); // this is a applepie :)

बहुत बढ़िया जवाब! साझा करने के लिए धन्यवाद! बिल्कुल यकीन नहीं है कि मैं ऐप्पल के बारे में आपके कोड में टिप्पणी को समझता हूं, हालांकि। ऊ
होल्डऑफहुंगर

64

3 उत्तर के लिए परीक्षा का समय:

केस को बदलकर पहला अक्षर निकालें

$str = "hello";
$str[0] = "";
// $str[0] = false;
// $str[0] = null;
// replaced by �, but ok for echo

1.000.000 परीक्षणों के लिए परीक्षा का समय: 0.39602184295654सेक


रूट के साथ पहला अक्षर निकालें ()

$str = "hello";
$str = substr($str, 1);

1.000.000 परीक्षणों के लिए परीक्षा का समय: 5.153294801712सेक


Ltrim () के साथ पहला अक्षर निकालें

$str = "hello";
$str= ltrim ($str,'h');

1.000.000 परीक्षणों के लिए परीक्षा का समय: 5.2393000125885सेक


पहला अक्षर preg_replace () के साथ निकालें

$str = "hello";
$str = preg_replace('/^./', '', $str);

1.000.000 परीक्षणों के लिए परीक्षा का समय: 6.8543920516968सेक


धन्यवाद। हालाँकि, मेरा अपडेट देखें। SQL क्वेरी में अद्यतन स्ट्रिंग का उपयोग करते समय मेरे लिए यह एक समस्या थी।
rybo111

6
मैं सिर्फ $str[0] = '';समाधान की कोशिश की और यह काम नहीं किया। हालांकि यह तब होता है जब आप तुलना करने के लिए चर का उपयोग करने पर योजना बनाते हैं >या <यह काम नहीं करेगा। यह अब भी उदाहरण के लिए `` के रूप में `` गिना जाता है $str = 'hello'; $str[0] = ''; var_dump($str); // string(5) 'ello'
इयान

@ इयान: मैं एक ही मुद्दे पर आया था जब एक एपीआई का उपयोग करते हुए एक कीवर्ड से रिकॉर्ड प्राप्त var_dump($keyword)किया था , कोशिश की थी जो पिछले चरित्र लंबाई दिखा रहा था .. तो मैंने कीवर्ड को ट्रिम करने की कोशिश की और फिर यह ठीक काम किया var_dump(trim($keyword)).. आशा है कि यह किसी की मदद करता है .. :)
सैयद क़रीब

3
यह काम नहीं करता। "हटा दिया गया" स्थिति को नल बाइट के साथ बदल दिया जाता है, इसलिए आपको "हैलो" के बजाय "\ 0 हेलो" मिलता है।
जोसेफ कुफनर

1
मुझे "चेतावनी: $ str [0] =" "के लिए एक स्ट्रिंग स्ट्रिंग को एक खाली स्ट्रिंग असाइन नहीं कर सकता;
फ्रांसिस्को लूज


11

PHP में स्ट्रिंग के पहले चरित्र को हटाने के लिए,

$string = "abcdef";     
$new_string = substr($string, 1);

echo $new_string;
Generates: "bcdef"

9
$str = substr($str, 1);

PHP मैनुअल उदाहरण 3 देखें

echo substr('abcdef', 1);     // bcdef

ध्यान दें:

unset($str[0]) 

काम नहीं करेगा क्योंकि आप एक स्ट्रिंग का हिस्सा नहीं खोल सकते हैं: -

Fatal error: Cannot unset string offsets

9

अपडेट करें

आगे के परीक्षणों के बाद, मैं इसे और अधिक उपयोग करने की सलाह नहीं देता। MySQL क्वेरी में अपडेट किए गए स्ट्रिंग का उपयोग करते समय, और substrसमस्या को ठीक करने के लिए इसे बदलने से मेरे लिए समस्या खड़ी हो गई। मैंने इस उत्तर को हटाने के बारे में सोचा था, लेकिन टिप्पणियों का सुझाव है कि यह किसी भी तरह से जल्दी हो, इसलिए किसी को इसके लिए उपयोग करना पड़ सकता है। आप पा सकते हैं अद्यतन की गई स्ट्रिंग को अद्यतन करना स्ट्रिंग की लंबाई समस्याओं को हल करता है।


कभी-कभी आपको एक फ़ंक्शन की आवश्यकता नहीं होती है:

$str[0] = '';

उदाहरण के लिए:

$str = 'AHello';
$str[0] = '';
echo $str; // 'Hello'

यह विधि किसी अन्य को बनाने के बजाय मौजूदा स्ट्रिंग को संशोधित करती है।


यह भी जल्दी लगता है।
इमानुएल रूसेव

@EmanuilRusev ऐसा कैसे? बस जिज्ञासु अगर आपका मतलब है कि यह टाइप करने के लिए तेज है या यह तेज चलता है।
rybo111

मेरा मतलब है कि यह अधिक तेज़ी से चलता है।
इमानुएल रुसेव

@EmanuilRusev मुझे दिलचस्पी होगी यदि आप कुछ आँकड़े प्रदान कर सकते हैं जैसा कि मैं उत्तर में जोड़ूंगा।
रयबो १११

1
इससे सावधान रहना चाहिए। नीचे दिए गए कोड बूल (झूठे) आउटपुट करते हैं। $ फू = 'पुस्तक'; $ बार = 'पुस्तक'; $ बार = पदार्थ ($ बार, 1); $ फू [0] = ''; var_dump ($ foo === $ bar);
विचारत्रिप्पा

8

स्वीकृत उत्तर:

$str = ltrim($str, ':');

काम करता है लेकिन :शुरू में एक से अधिक होने पर कई हटा देगा ।

$str = substr($str, 1);

शुरू से किसी भी चरित्र को हटा देगा।

तथापि,

if ($str[0] === ':')
    $str = substr($str, 1);

अच्छी तरह से काम।



2

प्रत्येक शब्द के ट्रिम होने की शुरुआत से लेकर अंत तक एक स्ट्रिंग + व्हाट्सएप और सामान्य ट्रिम के अनुसार वैकल्पिक रूप से अतिरिक्त एकल वर्ण ()

<?php
function trim_words($what, $words, $char_list = '') {
    if(!is_array($words)) return false;
    $char_list .= " \t\n\r\0\x0B"; // default trim chars
    $pattern = "(".implode("|", array_map('preg_quote', $words)).")\b";
    $str = trim(preg_replace('~'.$pattern.'$~i', '', preg_replace('~^'.$pattern.'~i', '', trim($what, $char_list))), $char_list);
    return $str;
}

// for example:
$trim_list = array('AND', 'OR');

$what = ' OR x = 1 AND b = 2 AND ';
print_r(trim_words($what, $trim_list)); // => "x = 1 AND b = 2"

$what = ' ORDER BY x DESC, b ASC, ';
print_r(trim_words($what, $trim_list, ',')); // => "ORDER BY x DESC, b ASC"
?>

1

कोड मेरे लिए अच्छा काम करता है।

$str = substr($str ,-(strlen($str)-1));

हो सकता है, जवाबों के साथ भी योगदान दें।


1
यह एक एकल वर्ण स्ट्रिंग के साथ काम नहीं कर रहा है: जैसे "a"
aur

आप सही हैं =) इसलिए, विश्वास करें कि एक संभावित समाधान परीक्षण से पहले होगा कि इसमें केवल एक ही चरित्र हो। उदाहरण के लिए: $ str = strlen ($ str)> 1? पदार्थ ($ str, - (strlen ($ str) -1)): $ str; या $ str = strlen ($ str)> 1? पदार्थ ($ str, - (strlen ($ str) -1)): ''; क्योंकि विचार केवल अंतिम चरित्र को हटाने के लिए है, यदि आपके पास केवल एक है ...: P
क्लॉडियोर ओलिवेरा

1

mb_substr फ़ंक्शन का उपयोग करें

    mb_substr("我abc", 1);

उपयोगी अगर चरित्र एक मुद्रा प्रतीक है।
रेमी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.