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

+0

따옴표 안에 텍스트의 일부만 입력하면됩니까? – Barmar

+0

@Barmar 따옴표 안에 부분이 필요합니다 –

답변

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을 다음 영업 이익은 또 다른 예를 표시 한 후. 그 편집을위한 해결책은 다음과 같습니다.

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

단락 안에있는 경우에도 작동합니다. "오늘의 인용문은 다음과 같습니다." –

+0

@MahmoudElSelimy "단락 내부"는 정말 모호합니다. 나는 현재 패턴에 대한 답을주었습니다. 오늘의 인용문은 '{이 일치}'입니다. . 다른 요구 사항이 있다면, 우리에게 말해주세요. – HamZa

+0

위의 또 다른 예제를 추가했습니다. 도움이 되길 바랍니다. –