2014-02-11 1 views
0

매우 복잡한 문자열이있어서 .jpg, .png 또는 .gif로 끝나는 모든 URL을 찾아 정적 URL로 바꾸고 싶습니다. 예를 들어;Regex : PHP 문자열이있는 이미지 URL 만 찾으십시오.

$string = "Lorem ipsum dolor sit amet, http://www.website.com/images/some.jpg; consul delicata comprehensam eos at. Mea rebum laudem deterruisset et, ex epicuri constituto his. Sea ad appareat democritum. http://www.anotherwebsite.com/images/some.png Omnis vituperata dissentiunt an duo. Sumo diceret lobortis at sed, singulis aliquando prodesset ex sit."; 

$regex = ?; 
$static_image_url= "http://new_image_url"; 

return preg_replace($regex, $static_image_url, $string); 

이 문자열은 이보다 복잡 할 수 있습니다. URL은 동적이며 URL은 HTML이 아닙니다.

대단히 감사합니다.

최고 감사합니다,

편집 :이 하나이 경우 근무

;

return preg_replace('/https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)/', $static_image_url, $string); 
+0

그래, 무엇을 시도 했습니까? –

+0

나는 중간에있다! 공부하고이 하나를 편집했지만 행운을 빕니다 http://stackoverflow.com/questions/7461922/just-get-the-image-url-from-string-in-php – user3213174

+0

다음과 같이 시작하십시오 : http : //regex101.com/r/nX1sN3 –

답변

1

링크에 공백이 없으면 링크가 바뀌어야합니다 (링크에 공백).

$string = "Lorem ipsum dolor sit amet, http://www.website.com/images/some.jpg; consul delicata comprehensam eos at. Mea rebum laudem deterruisset et, ex epicuri constituto his. Sea ad appareat democritum. http://www.anotherwebsite.com/images/some.png Omnis vituperata dissentiunt an duo. Sumo diceret lobortis at sed, singulis aliquando prodesset ex sit."; 
$static_image_url= "http://new_image_url"; 
return preg_replace('/https?:\/\/[^ ]+?(?:\.jpg|\.png|\.gif)/', $static_image_url, $string); 
+0

감사합니다. 나는 매우 우스운 일을 발견했다. 그러나 당신의 것이 훨씬 자세하게 보인다. – user3213174

+0

당신 문제는 그것이해야 할 일을하지 않는다는 것입니다. 예를 들어, 그것은'htt : // test.jpg'와'http : //www.the link.jpg'를 대체합니다. – Anonymous

+0

네, 네가 확실히 나아 졌어! – user3213174

0

정규식을 알아 내려면 온라인 도구를 사용하여 문자열을 테스트하십시오.

http://www.regextester.com.

예제 문자열에서 모든 링크가 "http : //"로 시작하기 때문에 패턴을 시작할 수 있습니다. 우리는 파일 형식 (jpg, png)의 확장과 그 중간에있는 모든 엉망으로 끝날 것임을 알고 있습니다.

http:\/\/.+?(\.jpg|\.png|\.gif) 

아무것도 일치 .+를 사용하고 ?을 추가하는 것은 ungreedy 수 있습니다. 그렇지 않으면, 우리는 첫 번째 링크의 시작에서 마지막 링크의 끝까지 모든 것을 얻을 것입니다.

경고이 정규식은 예제 문자열을 기반으로합니다. 링크가 'www.someplace.com/someimage.jpg'인 경우 일치하지 않습니다.

+0

이것은 'http : // www.website.com/images/somejpg'와 같은 링크를 잘못 대체합니다. 또한, 당신은'.gif'를 잊어 버렸습니다. – Anonymous

+0

답변을 주셔서 감사합니다, 이것도 작동합니다. – user3213174