묻고답하기
게시판 본문 내용 일괄수정
2015.07.09 14:52
https://www.xpressengine.com/000554789
https://www.xpressengine.com/000454488
본문에 내용에 이렇게 링크 주소가 있습니다
https://www.xpressengine.com/ 주소를 퀴리문으로 삭제를 했는데
UPDATE xe_documents SET title = REPLACE(title,'https://www.xpressengine.com/',' ')
이렇게 하니깐 주소만 삭제가 되네요 하지만 뒤에 숫자 어찌 못할까요???
ㅎ한가지더~~ 본문글들 자동으로 줄바꿈해서 좀 출력되는 방법은 없는지요
html에 이미지 다음 텍스트 앞에 <b> 위에 </b>가 붙게요
댓글 3
-
DoorWeb
2015.07.09 20:22
-
야야야료
2015.07.13 15:05
*떔시 뒤에 모든게 다 지워질까봐 다르게 적어서 테스트 했는데 안되네요 ㅠㅠ
-
ehii
2015.07.14 05:27
mysql에서 와일드카드나 정규식으로 replace를 쓸 수 없습니다.
where절에서 쓸 수 있긴 한데 정작 set에서 쓸 수 없어서 몇 가지 문제점이 있습니다.
UPDATE xe_documents SET title = CONCAT(substr(title,1,locate("http://aaa.com/",title)-1),' ',substring(title,locate("http://aaa.com/",title)+23)) where title rlike "http://aaa.com/[0-9]{8}";
<위 예에서 http://aaa.com/12345678의 총 문자수가 23개, url이 달라지면 +23 부분을 맞게 변경하셔야 하고,
http://aaa.com/[0-9]{8}은 뒤에 8자리 숫자가 포함된 url만 찾아서 공백문자' '으로 치환함을 뜻하며 여기 숫자 자리수 부분도 상황에 맞게 변경하셔야 합니다.
이렇게 쿼리를 날리실 경우 바꿀 문자열이 2개이상 중복으로 여러개 있는 경우는 처음 1개만 바뀝니다.
또한 필드내에 http://aaa.com/ 과 http://aaa.com/12345678 이 혼재되어 있으면 제일 앞에 있는 http://aaa.com/ 이 의도치 않게 치환될 수도 있습니다. >
따라서 필드내에 바꿀 url이 2개 이상 있는 경우 또는 url뒷부분 숫자의 자리수가 유동적인 경우에는
별도로 php파일로 db data를 불러와서 preg_match나 preg_replace를 이용하여 변환 후 update하도록 코드를 작성하시는 것이 좋을 것 같습니다.
테스트 해 봐야 하지만
UPDATE xe_documents SET title = REPLACE(title,'https://www.xpressengine.com/*',' ')
이렇게 * 이걸 추가해 보세요.