2010-01-12 14 views
12

मैं एक बड़ी स्ट्रिंग के भीतर "कीवर्ड" का उपयोग करना चाहता हूं। ये कीवर्ड my_keyword का उपयोग करके प्रारंभ और समाप्त होते हैं और उपयोगकर्ता परिभाषित होते हैं। कैसे, एक बड़ी स्ट्रिंग के भीतर, क्या मैं खोज सकता हूं और दो * अक्षरों के बीच क्या खोज सकता हूं और प्रत्येक उदाहरण वापस कर सकता हूं?PHP: दो वर्णों के बीच रिटर्न स्ट्रिंग

कारण यह बदल सकता है, कीवर्ड के कुछ हिस्सों को उपयोगकर्ता परिभाषित किया जा सकता है, जैसे कि पेज_डेट_वाई जो उस पृष्ठ को दिखा सकता है जिसमें पृष्ठ बनाया गया था।

तो, फिर, मुझे बस एक खोज करने की आवश्यकता है और उन * पात्रों के बीच क्या है। क्या यह संभव है, या क्या ऐसा करने का कोई बेहतर तरीका है यदि मुझे "कीवर्ड" लंबाई या मैं क्या हो सकता हूं?

+0

मैं एक सुपर अच्छा समारोह है कि सिर्फ करता है जो मैं चाहता पाया है, लेकिन, मैं एक सरणी में सभी पाया कीवर्ड रखना चाहते हैं। http://www.justin-cook.com/wp/2006/03/31/php-parse-a-string-between-two-strings/ क्या किसी के पास सुझाव है कि मैं उस स्क्रिप्ट को कैसे संशोधित कर सकता हूं? –

+0

मुझे आशा है कि उपयोगकर्ता उस में एक * के साथ एक कीवर्ड को परिभाषित नहीं कर सकते हैं;) – zombat

+0

मैं ऊपर के लिंक यू दे दिया है में समारोह का उपयोग कर रहा है और इसके लिए मेरे लिए ठीक काम कर रहा .... – Avinash

उत्तर

42
<?php 
// keywords are between * 
$str = "PHP is the *best*, its the *most popular* and *I* love it.";  
if(preg_match_all('/\*(.*?)\*/',$str,$match)) {    
     var_dump($match[1]);    
} 
?> 

आउटपुट:

array(3) { 
    [0]=> 
    string(4) "best" 
    [1]=> 
    string(12) "most popular" 
    [2]=> 
    string(1) "I" 
} 
+3

शानदार! और इतना आसान है। धन्यवाद! –

+1

सरल लेकिन शक्तिशाली जवाब ... चीयर्स! – VKGS

0

यहाँ फिर जाना:

function stringBetween($string, $keyword) 
{ 
    $matches = array(); 
    $keyword = preg_quote($keyword, '~'); 

    if (preg_match_all('~' . $keyword . '(.*?)' . $keyword . '~s', $string, $matches) > 0) 
    { 
     return $matches[1]; 
    } 

    else 
    { 
     return 'No matches found!'; 
    } 
} 

उपयोग इस तरह समारोह:

stringBetween('1 *a* 2 3 *a* *a* 5 *a*', '*a*'); 
3

पर विस्फोट "*"

$str = "PHP is the *best*, *its* the *most popular* and *I* love it."; 
$s = explode("*",$str); 
for($i=1;$i<=count($s)-1;$i+=2){ 
    print $s[$i]."\n";  
} 

उत्पादन

$ php test.php 
best 
its 
most popular 
I 
0

आप एक स्ट्रिंग है कि दो अलग तार (कोष्ठक, कोष्ठक, html टैग, आदि में कुछ की तरह) से घिरा है निकालने के लिए चाहते हैं, तो यहाँ एक पोस्ट अधिक है कि के लिए विशिष्ट है :

Grabbing a String Between Different Strings

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