extrovertive Posted January 26, 2011 Share Posted January 26, 2011 $text = "wow {one|two|three}fsasfa happy ness"; preg_match('/\b{*+}\b/i', $text, $matches); print_r($matches); Basically, $matches will contain "one|two|three" - but all I got is an array with "}" Quote Link to comment Share on other sites More sharing options...
QuickOldCar Posted January 26, 2011 Share Posted January 26, 2011 Might be easier way, but I just did it like this. <?php $text = "wow {one|two|three}fsasfa happy ness"; $matches = array(); preg_match_all('#\{.*?\}|[^ ]+#', $text, $matches); foreach ($matches[0] as $word) { $v = array(); if (preg_match('#^\{(.*)\}$#', $word, $v)) { echo '<strong>' . htmlspecialchars($v[1]) . '</strong>'; } else { echo htmlspecialchars($word); } echo '<br />'; } ?> Results be wow one|two|three fsasfa happy ness Now can do anything you want with the matching values Quote Link to comment Share on other sites More sharing options...
PaulRyan Posted January 26, 2011 Share Posted January 26, 2011 Hope I am not imposing, but this would work too. <?PHP $text = "wow {one|two|three}fsasfa happy ness"; $newTxt = explode('{',$text); $result = array(); if(count($newTxt) > 1) { foreach($newTxt AS $value) { if(strstr($value,'}')) { $value = explode('}',$value); $result[] = $value[0]; } } print_r($result); } else { echo 'No Results'; } ?> This assumes that all text between { AND } needs to be retrieved. Try it out and tell me how it goes Regards, PaulRyan. Quote Link to comment Share on other sites More sharing options...
AbraCadaver Posted January 26, 2011 Share Posted January 26, 2011 preg_match('/{([^}]+)}/i', $text, $matches); Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.