2010-07-22 4 views
13

मान लें कि मैं इस तरह एक स्ट्रिंग है:preg_replace का उपयोग कर एक ही प्रतीक के कई घटनाओं को बदलें?

$string = "hello---world"; 

मैं जगह --- एक भी हाइफ़न से के बारे में कैसे जाना होगा? स्ट्रिंग आसानी से इस बजाय दिखाई देगा:

$string = "hello--world----what-up"; 

वांछित परिणाम होना चाहिए:

$string = "hello-world-what-up"; 

उत्तर

28
$string = preg_replace('/-{2,}/','-',$string); 
+0

ब्रेसिज़ के उपयोग के लिए +1। –

+1

ब्रेसिज़ प्रदर्शन काफी बेहतर है तो बस '+'? – Wrikken

+0

धन्यवाद मार्क! :- डी क्या स्ट्रिंग एक के साथ शुरू होने पर इसे हाइफ़न हटा देना उतना ही आसान है? उदाहरण के लिए "--हेलो --- दुनिया" "हेलो-वर्ल्ड" बनने के लिए बदल रहा है? – kasperwf

0

कोशिश $string = preg_replace('/-+/', '-', $string)

0

यहाँ समारोह मैं उपयोग कर रहा हूँ है - एक आकर्षण की तरह काम करता है :)

public static function setString($phrase, $length = null) { 
    $result = strtolower($phrase); 
    $result = trim(preg_replace("/[^0-9a-zA-Z-]/", "-", $result)); 
    $result = preg_replace("/--+/", "-", $result); 
    $result = !empty($length) ? substr($result, 0, $length) : $result; 
    // remove hyphen from the beginning (if exists) 
    $first_char = substr($result, 0, 1); 
    $result = $first_char == "-" ? substr($result, 1) : $result; 
    // remove hyphen from the end (if exists) 
    $last_char = substr($result, -1); 
    $result = $last_char == "-" ? substr($result, 0, -1) : $result;  
    return $result; 
} 
2

शुरुआत और अंत से उन्हें हटाने के लिए:

$string = trim($string, '-'); 
+1

प्रश्न पूछने के 3 साल बाद आंशिक उत्तर पोस्ट करना वास्तव में उपयोगी नहीं है –

+2

कई आते हैं Google ** दैनिक ** के माध्यम से। यह जानकारी इन तीन वर्षों के लिए हर दिन पढ़ी जाती है और यह चली जाएगी। दुर्भाग्य से, इसे टिप्पणी के रूप में नहीं जोड़ा जा सका। – dragonattack