2012-02-18 3 views
11

से विशिष्ट शब्दों को स्ट्रिप करें, जहां भी वे स्ट्रिंग के अंदर हों, पूरे शब्द को स्ट्रिंग से स्ट्रिप करना चाहते हैं।स्ट्रिंग

मैं मना किया शब्द की एक सरणी बनाया है:

$wordlist = array("or", "and", "where", ...) 

अब मैं शब्द पट्टी:

foreach($wordlist as $word) 
$string = str_replace($word, "", $string); 

समस्या यह है कि इसके बाद के संस्करण कोड भी शब्द ऐसा वर्जित शब्द होते हैं स्ट्रिप्स "है रेत "या" अधिक "।

$wordlist = array("or", "and", "where"); 

foreach ($wordlist as &$word) { 
    $word = '/\b' . preg_quote($word, '/') . '\b/'; 
} 

$string = preg_replace($wordlist, '', $string); 

संपादित: Example

+2

समर्थक टिप दूर करने के लिए उपयोग करने की आवश्यकता : str_replace एक सरणी ले सकता है, इसलिए आप केवल 'str_replace ($ wordlist,' ', $ string) कर सकते हैं। – cmbuckley

उत्तर

17

इसके लिए आपको preg_replace और शब्द सीमाओं का उपयोग कर सकते हैं।

1

का प्रयास करें:

$string = preg_replace("\b$word\b", "", $string); 
+0

यह काम नहीं कर रहा है .. फेंकता है "डेलिमीटर को अल्फान्यूमेरिक या बैकस्लैश नहीं होना चाहिए" –

4

str_replace भी एक सरणी के इनपुट का समर्थन करता है। इसका मतलब है आप निम्नलिखित तरीके से इसका इस्तेमाल कर सकता है कि:

str_replace(array("word1", "word2"), "", $string); 

इसका मतलब यह है कि सभी शब्दों की सरणी में मौजूदा एक रिक्त स्ट्रिंग से बदल दिया जाएगा। यदि आप विशिष्ट प्रतिस्थापन चाहते हैं तो आप प्रतिस्थापन की एक सरणी भी बना सकते हैं।

अपने सेटअप में सही शब्दों को हटाने के लिए मैं "या" और "कहां" के आस-पास की जगह जोड़ने की सलाह दूंगा। जैसा कि आप केवल वास्तविक शब्दों को हटा देंगे और शब्दों के कुछ हिस्सों को नहीं हटाएंगे।

मुझे उम्मीद है कि इससे मदद मिलती है।

+0

रिक्त स्थान विचार एक साधारण है और शब्दों को प्रतिस्थापित करने के मामले में इस मामले में काम करने की संभावना है, लेकिन आम तौर पर यह एक समस्या पेश कर सकता है एक स्ट्रिंग की शुरुआत और अंत में। – cmbuckley

+1

लेकिन यह समस्या को हल नहीं करता है: 'उन शब्दों को भी स्ट्रिप करता है जिनमें "रेत" या "अधिक" जैसे वर्जित शब्द होते हैं। –

+2

@ नोमिकोस पोस्ट के दूसरे भाग को पढ़ते हैं। – cmbuckley

0
$areaname = str_replace(array("to", "the","a","an","in","by","but","are","is","had","have","has"),'',$areaname); 

मैं इस लिए इसका इस्तेमाल किया और

ठीक काम करता है लेकिन यह इन शब्दों के स्थान पर खाली स्थान होगा, ताकि आप की जगह फिर से डबल रिक्त स्थान chk और उन्हें

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