2016-09-13 2 views
1

문자열이있어서 strip_tags() 함수를 사용하여 IMG를 제외한 모든 태그를 제거했지만 여전히 IMG 요소 옆에 일반 텍스트가 있습니다. 여기에 시각적 인 예를 strip_tags()를 사용한 후 문자열에서 일반 텍스트를 제거하는 방법

$myvariable = "This text needs to be removed<a href='blah_blah_blah'>Blah</a><img src='blah.jpg'>" 

그래서 (내가 원하는 임) <img> 태그를 제외한 모든 태그를 제거 할 수 있었다 PHP strip_tags()를 사용하여. 그러나 이제는 텍스트를 삭제하지 않은 것입니다.

왼쪽 텍스트는 어떻게 제거합니까? 텍스트 것뿐만 아니라

[ADDED 자세한 내용은] 태그 앞에 또는 태그 후 항상 하나 변수가 실제로 들고 무엇

$description = 'crazy stuff<a href="https://websta.me/p/1337373806024694030_327078936"><img src="https://scontent.cdninstagram.com/t51.2885-15/e15/14287934_1389514537744146_673363238_n.jpg?ig_cache_key=MTMzNzM3MzgwNjAyNDY5NDAzMA%3D%3D.2"></a>'; 

. 사전에

덕분에

+0

정규 표현식 ..하지만 가능한 문자열 – nogad

+0

내가 방금 추가 한 변수를 체크 아웃에 대한 자세한 내용을 알 필요가있다. 미리 감사드립니다. – Carlitos

답변

1

대신 대체 뭔가 당신이 아주 잘 원하는 값을 추출 할 수 있습니다 :

(<(\w+).+</\2>) 

preg_match()와 함께 사용할 수, a demo on regex101.com를 참조하십시오. PHP IN
:

<?php 
$regex = '~(<(\w+).+</\2>)~'; 
$string = 'crazy stuff<a href="https://websta.me/p/1337373806024694030_327078936"><img src="https://scontent.cdninstagram.com/t51.2885-15/e15/14287934_1389514537744146_673363238_n.jpg?ig_cache_key=MTMzNzM3MzgwNjAyNDY5NDAzMA%3D%3D.2"></a>here as well'; 

if (preg_match($regex, $string, $match)) { 
    echo $match[1]; 
} 
?> 
+0

img 태그 부분 만 원한다면 어떻게해야합니까? – Carlitos

+0

그러면 파서 또는 [**'() +>)'**] (https://regex101.com/r/mO9gM6/2)를 사용할 수 있습니다. – Jan

0

strip_tags를 사용하여 코드의 전체 조각을 제시해주십시오.

당신이 시도 할 수 : preg_replace('~.*(<img[^>]+>)~', '$1', $myvariable);

+0

방금 ​​추가 한 변수를 확인하십시오. 미리 감사드립니다 – Carlitos

+0

위의 preg_replace를 사용하면 img 태그 만 유지할 수 있습니다. – antoni

관련 문제