मैं एक स्ट्रिंग के अंत से अल्पविराम कैसे निकालूं?


119

मैं एक स्ट्रिंग के अंत से अल्पविराम को दूर करना चाहता हूं। जैसा कि अब मैं उपयोग कर रहा हूं

$string = substr($string,0,-1);

लेकिन यह केवल स्ट्रिंग के अंतिम चरित्र को हटाता है। मैं स्ट्रिंग को गतिशील रूप से जोड़ रहा हूं, इसलिए कभी-कभी स्ट्रिंग के अंत में कोई अल्पविराम नहीं होता है। अगर इसके अंत में एक है तो मैं PHP को स्ट्रिंग के अंत से कॉमा को कैसे हटा सकता हूं?

जवाबों:


303

27
यह कई कॉमा को हटा देगा: "ए, बी ,,," "ए, बी" बन जाएगा। चाहे वह ओपी चाहता हो या नहीं मैं नहीं जानता ...
ग्रेग

1
धन्यवाद, मैं यह सब रूट, स्ट्रलेन, ... मेरे सारे जीवन
फरहाद

38

यह एक क्लासिक सवाल है, जिसमें दो समाधान हैं। यदि आप वास्तव में एक अल्पविराम निकालना चाहते हैं, जो वहां हो सकता है या नहीं, उपयोग करें:

if (substr($string, -1, 1) == ',')
{
  $string = substr($string, 0, -1);
}

यदि आप एक लाइन के अंत से सभी अल्पविराम को हटाना चाहते हैं तो सरल का उपयोग करें:

$string = rtrim($string, ',');

Rtrim फ़ंक्शन (और बाएं ट्रिम के लिए इसी ltrim) बहुत उपयोगी है क्योंकि आप वर्णों की एक सीमा को निर्दिष्ट कर सकते हैं, यानी कॉमा को हटाने और आपके द्वारा लिखे गए व्हाट्सएप को हटाने के लिए:

$string = rtrim($string, ", \t\n");

उस विस्तृत विवरण के लिए धन्यवाद। यह बातें स्पष्ट करता है!
zeckdude

12

मुझे लगता है कि आप लूप में कुछ समेट रहे हैं, जैसे

foreach($a as $b)
  $string .= $b . ',';

बहुत बेहतर है कि किसी एरे में आइटम इकट्ठा करें और फिर इसे एक सीमांकक के साथ मिलाएं जिसकी आपको आवश्यकता है

foreach($a as $b)
  $result[] = $b;

$result = implode(',', $result);

यह अनुगामी और दोहरी सीमांकक समस्याओं को हल करता है जो आमतौर पर संघनन के साथ होती हैं


अच्छा सुझाव। हालाँकि, PHP में सभी कॉन्टैटन नहीं हो सकते हैं। मेरे मामले में, मैं PHP के लिए एक जावास्क्रिप्ट स्ट्रिंग को अपरिवर्तित करने के लिए भेज रहा हूं।
सेबलफॉस्ट

4

यदि आप किसी चीज को लूप में ले रहे हैं, तो आप इसे इस तरह भी कर सकते हैं:

$coma = "";
foreach($a as $b){
    $string .= $coma.$b;
    $coma = ",";
}

2

rtrim फ़ंक्शन पर एक नज़र डालें

rtrim ($string , ",");

यदि अंतिम चार्ट अल्पविराम है तो उपरोक्त लाइन एक चार्ट को हटा देगी



1

एक साधारण नियमित अभिव्यक्ति काम करेगी

$string = preg_replace("/,$/", "", $string)

2
डेवलपर किसी समस्या को हल करने के लिए नियमित अभिव्यक्ति का उपयोग करता है और अब उसे दो समस्याएं हैं।
सिगर्ड


1

मेरे पास मेरी स्ट्रिंग के अंत में एक pesky "अदृश्य" स्थान था और ऐसा करना था

 $update_sql=rtrim(trim($update_sql),',');

लेकिन ऊपर एक समाधान बेहतर है

 $update_sql=rtrim($update_sql,', ');

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