2016-07-30 2 views
-2

문자열에서 원하지 않는 텍스트를 제거하고 싶습니다.preg_match 문자열에서 원하지 않는 텍스트를 제거하십시오.

$description = 'this is some huge text <a href="http://example.com/dynamicID">dynamicID</a><br> and some more text here'; 

preg_match('/(example.com([^&]*)?)"/',$description,$matches); 

$part = $matches[1]; 

echo $part; //returning example.com/dynamicID">dynamicID</a><br> and... 

그러나 나는 (example.com/dynamicID) 만 원하고 나머지 텍스트는 문자열에서 제거합니다.

무엇이 여기에 있습니까?

+0

재생할 수 없습니다. https://eval.in/614467 '$ description'이 다른 것으로 의심됩니다. – chris85

+0

그렇습니다. '$ description'은 동적이고 항상 다른데 왜냐하면 example.com/dynamicID는 – KenDev

+0

변경 ('example.com ([^ &] *)?')'을' ([^ "] *)?)'[^ &]'를'[^"]로 대체하십시오.'&'가 없으므로'''이 있습니다 : https : // regex101을보십시오. – ArtisticPhoenix

답변

1

닫기가 완료되었습니다. 난 당신이 <a> 태그에 일명 닫는 인용하기 전에 텍스트 (의 URL 부분을 원하는 가정합니다.

당신은 당신이 아니라 바로 가능한 모든 문자와 일치하는 것을 시도하도록 )?"을 추가하기 만하면됩니다

그러나 결과 $ match [0]에는 인용 문자가 포함됩니다. 실제로 일치시킬 항목에 그룹을 추가하고 $ matches [1]을 결과로 취하여이를 수정할 수 있습니다 아래에 위에서 언급 한 2 가지 변경 사항으로 수정 된 코드는 다음과 같습니다.

$description = 'this is some huge text <a href="http://example.com/dynamicID">dynamicID</a><br> and some more text here'; 

preg_match('/(example.com([^&]*)?)"/',$description,$matches); 

var_dump($matches); 

출력은 다음과 같습니다.

array(3) { 
    [0]=> 
    string(22) "example.com/dynamicID"" 
    [1]=> 
    string(21) "example.com/dynamicID" 
    [2]=> 
    string(10) "/dynamicID" 
} 
+0

당신의 제안에 따라 내 질문을 업데이트했지만 그 결과는 여전히 동일합니다. – KenDev

+0

질문에 복사하여 붙여 넣으려고했는데 실행 해 보았습니다. – maresa

+0

나는 var_dump ($ matches)'results'array (3) {[0] => string (3274)를 사용하여 이것을 얻고있다.) "example.come/dynamicID"dynamicID
및 ... ' – KenDev

관련 문제