2014-02-20 68 views
1

我有這樣的文字,「哇!這真是太棒了。」我需要通過「!」分割這個文本要麼 」。」運算符,並需要顯示數組的第一個元素(例如$ text [0])。如何查找在多個字符串中的文本中首先出現哪個字符串?

$str="wow! it's, a nice product."; 
$text= preg_split('/[!.]+/', $str); 

這裏$ text [0]只有值「哇」。但我想知道哪個字符串首先出現在文本中(無論是「!」還是「。」),以便我將它附加到$ text [0]並顯示爲「哇!」。

我想在smarty模板中使用這個preg_split。

<p>{assign var="desc" value='/[!.]+/'|preg_split:'wow! it's, a nice product.'} 
{$desc[0]}.</p> 

上面的代碼顯示結果爲「哇」。 smarty沒有preg_match,到目前爲止我已經搜索過。其他明智的,我會使用它。 任何幫助,將不勝感激。感謝提前。

回答

2

相反的preg_split你應該使用preg_match

$str="wow! it's, a nice product."; 
if (preg_match('/^[^!.]+[!.]/', $str, $m)) 
    $s = $m[0]; //=> wow! 

如果你必須使用preg_split只有這樣,你可以這樣做:

$arr = preg_split('/([^!.]+[!.])/', $str, -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY); 
    $s = $arr[0]; //=> wow! 
+0

謝謝,它完美的作品。但我想在這樣的smarty文件中實現: {assign var =「desc」value ='/ [!。 – Manik

+0

看到我的更新,如果有幫助。否則請張貼有問題的代碼,因爲很難從評論中閱讀。 – anubhava

1

試試這個

/(.+[!.])(.+)/ 

它會分裂串入兩個。

$ 1 =>哇!

$ 2 =>這是一個很好的產品。

see here

+0

'(不管它是「!」還是「。」)'但你只檢查'!' – demonking

+0

作出更正@demonking – user3064914

相關問題