2011-12-13 18 views
12

मैं सभी गैर पत्र और नंबर वर्ण अर्थात /&%#$ आदि एक अंडरस्कोर (_) के साथ बदलें और के साथ "" खाली (ताकि कोई अंडरस्कोर) सभी ' (एकल उद्धरण) की जगह के लिए इच्छुक हूँ।पीएचपी preg_replace विशेष वर्ण

तो "वहाँ नहीं होगा किसी भी" (दोहरे उद्धरण चिह्नों की अनदेखी) "There_wouldnt_be_any" बन जाएगा।

मैं इसलिए पोस्ट अभिव्यक्तियों में बेकार हूं।

चीयर्स

उत्तर

26
$newstr = preg_replace('/[^a-zA-Z0-9\']/', '_', "There wouldn't be any"); 
$newstr = str_replace("'", '', $newstr); 

मैं कोड थोड़ा और स्पष्ट करना दो अलग-अलग लाइनों जोड़ देते हैं।

नोट: यदि आप यूनिकोड समर्थन की तलाश में हैं, तो नीचे फिलिप का उत्तर देखें। यह उन सभी पात्रों से मेल खाएगा जो A-z के अतिरिक्त अक्षरों के रूप में पंजीकृत हैं।

2

दो चरणों में ऐसा करते हैं:

  1. this regex के साथ नहीं वर्ण के अक्षर की जगह:

    [\"\']

  2. :

    [\/\&%#\$]

  3. this regex के साथ उद्धरण की जगह

और प्रयोग preg_replace:

$stringWithoutNonLetterCharacters = preg_replace("/[\/\&%#\$]/", "_", $yourString); 
$stringWithQuotesReplacedWithSpaces = preg_replace("/[\"\']/", " ", $stringWithoutNonLetterCharacters); 
28

यदि आप लिख कर "गैर अक्षर और अंक" को बाहर से भी अधिक [A-Za-z0-9] (यानी। अक्षरों के लिए åäö जैसे अक्षरों पर विचार करना) और यूटीएफ -8 स्ट्रिंग्स \p{L} और \p{N} को सटीक रूप से संभालने में सक्षम होना चाहते हैं।

  1. \p{N} किसी भी "संख्या"
  2. \p{L} किसी भी "पत्र चरित्र" है, जो
    • लोअर केस पत्र
    • संशोधक पत्र
    • अन्य पत्र
    • शामिल की भरपाई कर देंगे से मेल खाएगी
    • शीर्षक केस पत्र
    • अपर केस अक्षर

प्रलेखन PHP: Unicode Character Properties


$data = "Thäre!wouldn't%bé#äny"; 

$new_data = str_replace ("'", "", $data); 
$new_data = preg_replace ('/[^\p{L}\p{N}]/u', '_', $new_data); 

var_dump (
    $new_data 
); 

उत्पादन

string(23) "Thäre_wouldnt_bé_äny" 
+0

मेरे मामले ßällistic में अपलोड करने के बाद ßällistic ने ले लिया। – erdomester

+0

@erdomester आपके पीसीआरई (नियमित अभिव्यक्ति इंजन) का संस्करण यूटीएफ -8 के लिए समर्थन के साथ संकलित किया गया है? –

+0

मुझे यकीन नहीं है कि मैं आपको समझता हूं। फ़ाइल को बीओएम के बिना यूटीएफ -8 में एन्कोड किया गया है। मैं FileZilla – erdomester

संबंधित मुद्दे