2012-12-28 39 views
6

क्या सभी मैचों की बजाय मिलान के एक उदाहरण को हटाने के लिए ltrim() का उपयोग करने का कोई आसान तरीका है?एक वर्ण को हटाने के लिए PHP अंतर्निहित ltrim() का उपयोग

मैं तार के सरणी के माध्यम से पाशन कर रहा हूँ और मैं पहली बार निकालना चाहते हैं, और केवल पहले मैच (इस मामले में स्वर):

ltrim($value, "aeiouyAEIOUY"); 

डिफ़ॉल्ट व्यवहार स्ट्रिंग के साथ aardvark या Aardvark होगा "rdvark" होने के लिए छंटनी की जानी चाहिए। मुझे परिणाम "ardvark" होना चाहिए।

मैं किसी भी माध्यम से ltrim के लिए बाध्य नहीं हूं लेकिन यह निकटतम अंतर्निहित PHP फ़ंक्शन लग रहा था। यह ltrim और rtrim का अच्छा एक वैकल्पिक पैरामीटर "सीमा", बस कह ... :)

+1

aaeezz परिणाम aezz या aeezz होना चाहिए? – Lepidosteus

उत्तर

4

बस preg की जगह यह एक सीमा का विकल्प है का उपयोग

जैसे

$value = preg_replace('/^[aeiouy]/i', '', $value, 1); 
+0

यह वास्तव में '{1} 'से बेहतर है। पार्स करने के लिए कम। क्या दूसरे पैरामीटर में डबल कोट्स के लिए डाउनवोट हो सकता है? – Geo

+0

आह सही इसके लिए धन्यवाद मैंने –

1

आप ltrim उपयोग नहीं कर सकते कारणों तुम कहते हो के लिए यह करने के लिए किया था हो सकता है, और न ही आप जो भी str_replace उपयोग कर सकते हैं (कोई सीमा नहीं है)। मुझे लगता है कि यह सबसे आसान सिर्फ एक regex का उपयोग करने के लिए है:

$value = preg_replace('/^[aeiouy]/i', '', $value); 

लेकिन अगर तुम सच में, आप सबस्ट्रिंग उपयोग कर सकते हैं करने के लिए नहीं करना चाहते हैं, लेकिन आप में उन लोगों के तार में से किसी की स्थिति की जांच करने के लिए होगा एक लूप में स्ट्रिंग के रूप में कोई php फ़ंक्शन नहीं है जो ऐसा चेक करता है जिसे मैं जानता हूं।

+0

धन्यवाद, मेरे पास पहले चरित्र को हटाने के तरीके पर प्रतिबंध नहीं हैं। मैं PHP पर बस नया हूं और अभी तक सभी कार्यों के साथ परिचित नहीं हूं। preg_replace महान काम करता है। – ptay

1

आप preg_replace फ़ंक्शन का उपयोग कर सकते हैं:

<?php 
    $value = preg_replace('/^[aeiouy]/i', '', $value); 
?> 
+0

'{1}' अनावश्यक है। – delnan

+0

@ डेलनन सिर के लिए धन्यवाद। मैंने इसे हटा दिया है। –

4

रेगुलर एक्सप्रेशन शायद overkill है, लेकिन:

$value = preg_replace('/^[aeiouy]/i', '', $value); 

नोट i यह केस-संवेदी बना देता है।

+0

बिल्कुल सही! धन्यवाद। – ptay

1

कई तरह से आप कर आप क्या करना चाहते हैं के बारे में जाना जा सकता है।

$pattern = '/^[aeiouy]{1}/i'; 
$result = preg_replace($pattern, '', $original_string); 
+0

संपादित किया है यह भी अच्छा काम करता है, धन्यवाद! – ptay

1

यह शायद सबसे कारगर तरीका है (ताकि उपेक्षा मेरी नियमित अभिव्यक्ति का जवाब):

शायद इस तरह एक नियमित अभिव्यक्ति प्रतिस्थापन होगा सीधा,

if (strpos('aeiouyAEIOUY', $value[0]) !== false) $value = substr($value, 1); 

या

if (stripos('aeiouy', $value[0]) !== false) $value = substr($value, 1); 
+0

मुझे रेगेक्स संस्करण बेहतर पसंद है। –

+0

+1। मुझे संदेह है कि यह रेगेक्स से तेज होगा। बेंचमार्क, कोई भी? – Geo

+0

@ जीओ रेगेक्स संस्करण लगातार 20% धीमा है, लेकिन दोनों के लिए 1 मिलियन ऑपरेशन केवल एक सेकंड लेते हैं, इसलिए इस मामले में गति लाभ होने की संभावना नहीं है। –