2012-04-30 12 views
5

मैं कुछ करने के लिए सक्षम होना चाहते हैं में इस्तेमाल नहीं सभी पत्र प्राप्त करें यह पसंद है।एक स्ट्रिंग

मैं एक foreach और पात्रों की सरणियों के साथ आसानी से कर सकता है, लेकिन मैं सोच अगर कोई एक और अधिक सुरुचिपूर्ण समाधान था।

+1

"जन्मदिन मुबारक" does not एक "ई" है यह :-P –

+0

@Rocket सच ... – diracdeltafunk

उत्तर

5

यहां मैं क्या आया हूं।

function findNot($str){ 
    return array_diff(range('a','z'), array_unique(str_split(strtolower($str)))); 
} 
+0

धन्यवाद, यह काम करता है! – diracdeltafunk

+0

कोई समस्या नहीं है। मैं खुशी से मदद कर सकता है। :-) –

+0

ईश्वर, मेरी इच्छा है कि मैं दो उत्तरों को स्वीकार कर सकूं – diracdeltafunk

4

कैसे के बारे में इस

$str="abc"; 
var_dump(findNot($str)); 

function findNot($string) 
{ 
    $letters = range('a', 'z'); 
    $presents = array_map(function($i) { return chr($i); }, array_keys(array_filter(count_chars($string)))); 

    return array_diff($letters, $presents); 
} 

पुनश्च: implode परिणाम आप वर्ण की एक स्ट्रिंग, नहीं सरणी

पी पी एस की जरूरत है: यकीन नहीं करता है, तो यह एक "और अधिक सुरुचिपूर्ण" समाधान :-)

है

PPPS: एक और समाधान मैं के बारे में सोच सकता है

$str="abc"; 
var_dump(findNot($str)); 

function findNot($string) 
{ 
    $letters = range('a', 'z'); 
    $presents = str_split(count_chars($string, 4)); 
    return array_intersect($letters, $presents); 
} 
+0

जब phptester पर परीक्षण में। नेट, मुझे यह त्रुटि मिलती है: 'पार्स त्रुटि: सिंटैक्स त्रुटि, अप्रत्याशित T_FUNCTION, उम्मीद है') '/home/jabouzic/public_html/phptester.net/txt/c6e64dbae6ae8ca4d0cfe6639f624fb9-67.176.58.205_1.php5 लाइन 8' – diracdeltafunk

+0

@ Ben7005 पर : ऐसा इसलिए है क्योंकि अनाम कार्य केवल PHP 5.3+ में काम करते हैं। कई ऑनलाइन PHP परीक्षक 5.3 का समर्थन नहीं करते हैं। –

+0

@ Ben7005: क्योंकि यह php5.3 सुविधाओं का उपयोग करता है। वैसे भी, एक छोटा जोड़ा गया, जो पुराने संस्करणों के साथ काम करेगा – zerkms

0

Zerk के solutio है एन अच्छा है। मैं इस तरह के उदाहरण के साथ आया, सुरुचिपूर्ण के रूप में नहीं।

<?php 

$alphabet = 'abcdefghijklmnopqrstuvwxyz'; 
$alphabet = preg_split('//', $alphabet, -1, PREG_SPLIT_NO_EMPTY); 

$str="abc"; 
var_dump(findNot($str)); //will echo "defghijklomnopqrstuvwxyz" 
$str2="happy birthday"; 
var_dump(findNot($str2)); //will echo "cfgjklmnoqsuvwxz" 

function findNot($str) 
{ 
    global $alphabet; 

    $str = str_replace(' ', '', $str); 
    $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); 
    $chars = array_unique($chars); 
    sort($chars); 

    $diff = array_diff($alphabet, $chars); 

    return $diff; 
} 
3

आप कुछ इस तरह कर सकता है:

$text = 'abcdefghijklmnop'; 
$search = array('a','b','c'); 

$result = str_replace($search, '', $text); 
+0

ग्रेट विचार बीटीडब्ल्यू - वर्णमाला में स्ट्रिंग के सभी वर्णों को प्रतिस्थापित करने के लिए – zerkms

+0

हाँ, मैं सहमत हूं। बिल्कुल वही नहीं जो मैं खोज रहा हूं, मुझे टेक्स्ट को एन सर में परिवर्तित करना होगा (मुझे पता है कि यह एक अंतर्निहित फ़ंक्शन है ...) – diracdeltafunk

+0

स्ट्रिंग को कन्वर्ट करने के लिए आप 'str_split' (और' array_unique') का उपयोग कर सकते हैं एक सरणी, और 'इम्प्लोड (' ', रेंज (' ए ',' जेड '))' वर्णमाला बनाने के लिए :) –