2011-07-08 64 views
0

我有一個多行字符串。對於這個例子,我的字符串將是這樣的:PHP簡單字符串操作

Name:Jaxo 
Description:A person on Stackoverflow 
Question:$this->questionName(); 

我怎麼能得到只是說,'說明'?在描述之後,我需要所有的東西,比如'Stackoverflow上的一個人'。我試過這樣的正則表達式,但它不起作用:/^Description:(.+?)\n/i

任何幫助非常感謝!

感謝

-Jaxo

+0

'說明' 不就是在字符串的開始,你需要刪除^爲您正則表達式工作正常。 –

回答

1

這應該爲你工作:

if (preg_match('/Description:(.+)/im', $subject, $regs)) { 
    $result = $regs[1]; 
} else { 
    $result = ""; 
} 

哪裏$result是說明名稱。

+0

工作完美,謝謝! 我將其縮短爲: 'echo $ result = preg_match('/ Description:(。+)/ im',$ subject,$ r)?$ r [1]:null;' – Scott

0

如果有一個換行符將標籤的每個部分分開,您可能會爆炸。

$array = explode("\n",$string); // separate params 
$desc = explode(":",$array[1]); // separate description 

這樣你可以得到任何參數。

+0

正確,但是如果在描述中有分號,那麼'count($ desc)> 2'(只是一個規格)。 – Donovan

0

試試這個:

$a="Name:Jaxo 
Description:A person on Stackoverflow 
Question:\$this->questionName();"; 

preg_match("/Description:([^\n]+)/i",$a,$m); 
print_r($m); 

輸出:

Array ([0] => Description:A person on Stackoverflow [1] => A person on Stackoverflow)