2012-11-30 18 views
7

में शुरू करने वाले शब्दों को कैसे निकालूं, मेरे पास एक स्ट्रिंग है जिसमें इसमें हैश टैग हैं और मैं टैग खींचने की कोशिश कर रहा हूं, मुझे लगता है कि मैं बहुत करीब हूं लेकिन एक ही परिणाममैं एक स्ट्रिंग से हैश टैग (#) से एक सरणी

$string = "this is #a string with #some sweet #hash tags"; 

    preg_match_all('/(?!\b)(#\w+\b)/',$string,$matches); 

    print_r($matches); 

पैदावार जो

Array ( 
    [0] => Array ( 
     [0] => "#a" 
     [1] => "#some" 
     [2] => "#hash" 
    ) 
    [1] => Array ( 
     [0] => "#a" 
     [1] => "#some" 
     [2] => "#hash" 
    ) 
) 

मैं सिर्फ प्रत्येक शब्द एक हैश टैग के साथ शुरुआत के साथ एक सरणी चाहते हैं के साथ एक बहु-आयामी सरणी हो रही।

उत्तर

14
इस

किया जा सकता है द्वारा /(?<!\w)#\w+/ regx यह

+0

आपको बहुत बहुत धन्यवाद। यह काम किया !! – Nikz

+1

@Nikz आपका बहुत स्वागत है ... :) –

+0

मदद करने में खुशी है कि सभी दुनिया को शुरुआती कीवर्ड के साथ कैसे निकालें? –

3

क्या preg_match_all करता है कि काम करेंगे। आप हमेशा एक बहुआयामी सरणी मिलता है। [0] पहला मैच है और [1] पहला कैप्चर समूह परिणाम सूची है।

वांछित तारों के लिए बस $matches[1] पर पहुंचें। (दर्शाया बाहरी Array ([0] => Array ([0] साथ आपका डंप गलत थी आप एक subarray स्तर मिलता है।।)

2

मुझे लगता है कि इस समारोह तुम्हारी मदद करेगा:

echo get_hashtags($string); 

function get_hashtags($string, $str = 1) { 
    preg_match_all('/#(\w+)/',$string,$matches); 
    $i = 0; 
    if ($str) { 
     foreach ($matches[1] as $match) { 
      $count = count($matches[1]); 
      $keywords .= "$match"; 
      $i++; 
      if ($count > $i) $keywords .= ", "; 
     } 
    } else { 
     foreach ($matches[1] as $match) { 
      $keyword[] = $match; 
     } 
     $keywords = $keyword; 
    } 
    return $keywords; 
} 
0

प्रयास करें:

$string = "this is #a string with #some sweet #hash tags"; 
preg_match_all('/(?<!\w)#\S+/', $string, $matches); 
print_r($matches[0]); 
echo("<br><br>"); 

// Output: Array ([0] => #a [1] => #some [2] => #hash) 
संबंधित मुद्दे