2013-04-04 66 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