2014-11-03 64 views
0

我想抓住一個字符串的具體部分有一個開始字符和結束字符。抓住一個字符串的特定部分

例如;

$str = "Lorem ipsum |example xyz|dolor sit amet, consectetur adipiscing 
elit |example|. Vivamus at posuere magna. Suspendisse rutrum rhoncus leo 
vitae vehicula. Nunc nec dapibus nisi. Donec facilisis mauris sapien, eget 
blandit enim |example xyz| dignissim auctor.|example| Nullam a porta orci. 
Donec pharetra urna odio, ut pellentesque est eleifend vel. Nulla tincidunt 
tellus sed dui fermentum viverra. Vivamus sit amet semper mi." 

我想抓零件全部|example xyz| .. blabla.. |example|

我該怎麼做? 謝謝..

+0

你有什麼嘗試,是預期的結果數組的比賽或第一場比賽? – naththedeveloper 2014-11-03 09:19:48

+0

你可以在'|'上爆炸並丟棄結果中的奇數鍵(因爲它們總是包含'example'或'example xyz' .. – naththedeveloper 2014-11-03 09:21:17

回答

0
function stringcutout($string,$start,$stop) 
{ 
$ret=''; 
if (strstr($string,$start)) 
{ 
    $p=strpos($string,$start); 
    $b=substr($string,$p+strlen($start)); 
    if (strstr($b,$stop)) 
    { 
    $p=strpos($b,$stop); 
    $b=substr($b,0,$p); 
    $ret=$b; 
    } 
} 
return $ret; 
} 

我在用這個。我知道這是不是很漂亮,但工作...

+0

請注意,這個函數只查找字符串的第一個出現。 – 2014-11-03 09:20:27

+0

否我很好,但我想獲得一個包含「| example xyz | .. blabla .. | example |」的整個部分的數組,我的結果返回一個空字符串。 – kbrk 2014-11-03 09:44:17

+0

$ start ='| example xyz | '; $停止=' |例子|'; $ RET = stringcutout($海峽,$開始,$停止); 打印($ RET); 這將返回我:悲坐阿梅德,consectetur adipiscing elit – 2014-11-03 11:22:57

0

\|([\w\s]+)\|使用正則表達式來獲得|

UPDATE之間的任何話

要包括|example xyz||example|使用這個表達式:

(\|example xyz\|[\w\s]\|example\|) 
+0

我覺得他想要的部分「管道外」 – naththedeveloper 2014-11-03 09:22:01

+0

其實我想整個部分。例如xyz | .. blabla .. | example |「 – kbrk 2014-11-03 09:41:31

+0

@brk我已更新回答 – Justinas 2014-11-03 12:16:43

0

如果你有一個固定的字符串,你正在尋找你可以使用preg_match

preg_match_all('/\|example xyz\|[\w\s\,\.]+\|example\|/', $str, $matches); 
if (count($matches) > 0) 
{ 
    foreach ($matches[0] as $match) 
    { 
     echo $match; 
    } 
} 
+0

它總是返回空數組。 – kbrk 2014-11-03 09:39:38

+0

那麼,你能告訴我你是如何使用preg_match? – Seunhaab 2014-11-03 09:44:00

+0

檢查我的新編輯,應該給你」| example xyz | text | example |「在$匹配 – Seunhaab 2014-11-03 10:00:14

0

好了,所以你需要一個不同的功能...... 你可以得到多種內容,包括任何始於|例如使用此項功能:

$return=array(); 
$ex=explode('|example',$str); 
if (sizeof($ex)>0) {unset($ex[0]); foreach ($ex as $s) {$x=strpos($s,'|'); $return[]=substr($s,$x+1);}} 

,如果你不想要的額外最後結果(這是不是「終止」的例子),你可以取消它...