2013-04-04 65 views
1

我有這個字符串段落中:的preg_match()文本提取

今天的報價是:從昨天的學習,生活在今天,憧憬明天。重要的是不要停止提問。「

我需要提取這句話「從昨天學習,爲今天而活,希望爲明天,重要的是不要停止提問。」

我不熟悉正則表達式,所以我想在這裏得到一些幫助。 我想:

preg_match("Today's quote is: '[a-zA-Z0-9]'",$response, $matches); 

當然,像我想象它不工作。任何幫助,將不勝感激。提前致謝。

編輯: 此外我需要包含「_」和「 - 」與字母數字表達式。

例子:

$string = "site : '6LcZwNcSAAAAAEcQkyCCSteouAQS9jO7wDrgzvbL', rtl : false, challenge : '03AHJ_Vuv_3y7kY-GQaCyzgrz9ZTv_cFQN_F0jEqOGNq0-3QANrsxJ18oPj4bbhRqPoISIZbqBBdeEXVfpnnVjlTsjoxQugI4j0zB1yRQU1m4wXzFGVRpuRyXJmnJU3d7Ix0nhyO_OBeFCR7v9gXtz_BNN04tSzXxVyvKCExO9I2vcqcIhWJQE8K8'";

我需要的單詞 「挑戰」 之後的字符串相匹配。包含下劃線和「 - 」。

+0

爲了解壓縮爲什麼不是substr()?你確定你需要一個regEx? – MeNa 2013-04-04 23:15:55

+0

你只需要得到引號內的文字部分? – Barmar 2013-04-04 23:18:03

+0

@Barmar我需要引用內部的部分 – 2013-04-04 23:21:34

回答

2

這應該做的工作:

$string = "Today's quote is: 'Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning.'"; 
preg_match('/.*?:.*?\'(.*?)\'/', $string, $m); 
echo $m[1]; // Learn from yesterday, live for today, hope for tomorrow. The important thing is not to stop questioning. 

EDIT2:在OP顯示另一個例子之後。這是該編輯的解決方案:

$string = "site : '6LcZwNcSAAAAAEcQkyCCSteouAQS9jO7wDrgzvbL', rtl : false, challenge : '03AHJ_Vuv_3y7kY-GQaCyzgrz9ZTv_cFQN_F0jEqOGNq0-3QANrsxJ18oPj4bbhRqPoISIZbqBBdeEXVfpnnVjlTsjoxQugI4j0zB1yRQU1m4wXzFGVRpuRyXJmnJU3d7Ix0nhyO_OBeFCR7v9gXtz_BNN04tSzXxVyvKCExO9I2vcqcIhWJQE8K8'"; 
preg_match_all('/.*?:.*?\'(.*?)\'/', $string, $m); 
var_dump($m); 
+0

即使它位於段落內,它也能正常工作嗎?我需要確保在它之前有「」今日報價:「 – 2013-04-04 23:24:50

+0

@MahmoudElSelimy」在一段中「真的很模糊,我提供了一個當前模式的答案'今天的報價是:'{匹配這個}''所以如果你有其他的需求,請告訴我們, – HamZa 2013-04-04 23:27:14

+0

我在上面添加了另外一個例子,希望對你有幫助 – 2013-04-04 23:36:35