2014-02-20 3 views
1

나는 "와우! 놀라워."같은 텍스트가 있습니다. 나는이 텍스트를 "?" 또는 "." 연산자 및 array (example $ text [0])의 첫 번째 요소를 표시해야합니다.여러 문자열 중에서 텍스트에서 처음으로 나타나는 문자열을 찾는 방법은 무엇입니까?

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

여기에 "와우"값만있는 $ text [0]. 그러나 텍스트 ("!"또는 ".")에 관계없이 먼저 어떤 문자열이 발생했는지 알고 싶기 때문에 $ text [0]에 추가하고 "wow!"와 같이 표시합니다.

멋진 템플릿에서이 preg_split을 사용하고 싶습니다.

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

위의 코드는 결과를 "와우"로 표시합니다. preg_match가 멋지게 나왔다. 지금까지 나는 수색했다. 다른 것은 현명하다. 나는 그것을 사용할 것이다. 도움이 될 것입니다. 사전에 감사합니다. 당신은 단지 다음 preg_split를 사용해야하는 경우

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

당신이 할 수 있습니다 :

답변

2

대신 preg_split 당신은 preg_match 사용해야

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

감사합니다. 완벽하게 작동합니다. 하지만이 "

{할당 var ="desc "값 = '/ [!.] + /'| preg_split : $ product.description_short} \t {$ desc [0]}.

" – Manik

+0

도움이되면 내 업데이트를 참조하십시오. 그렇지 않으면 주석에서 읽는 것이 어렵 기 때문에 문제의 코드를 게시하십시오. – anubhava

1

이이

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

가 분할됩니다 시도 두 개의 문자열.

$ 1 => 와우!

$ 2 => 멋진 제품입니다.

see here

+0

'("!"또는 ".")'이든간에'! '만 확인하십시오 – demonking

+0

은 @demonking을 수정했습니다. – user3064914

관련 문제