php 정규식 하나만 부탁할께요 ㅠ..ㅠ

그래픽 편집기에서 글을 쓰다가 보면 외부의 웹페이지를 긁어서 붙이는 경우가 있어요.
대부분은 문제가 없는데 <textarea> ... </textarea> 가 있는 부분이 들어오게 되면
답글을 달 때 문제가 생기게 됩니다.

phpschool을 찾아보니까... 답글을 달아줄 때... 안에 들어가는 내용에서

<textarea name="content" cols="32" rows="4">---></textarea>를

아래처럼 바꾸면 된다고 하더라구요.

&lt;textarea name="content" cols="32" rows="4"&gt;
---&gt;
&lt;/textarea&gt;

이것을 한번에 싹 바꿔버리는 방법 없나요??? php 정규식이 넘 어려워서 엄두가 안나네요.
|

댓글 8개

찾기/바꾸기로 바꾸시려는 건가요..? Ctrl+F로?
db에 들어가는 글의 내용을 바꾸는 것이므로 프로그램을 써야죠.
그러면....
htmlentities // htmlspecialchars

이걸로 하면 되지 않나요? 따옴표는 인자 값줘서 처리유무 설정 할 수 있으니...
htmlspecialchars 는
<textarea name="content" cols="32" rows="4">---></textarea>
이내용이 그대로 들어가므로 에러가 발생할수도 있을것 같구요..

htmlentities() 로 하시면 문자 엔티티에 존재하는 모든 문자를 엔티티로 변환하므로
htmlentities() 를 쓰시면 되겟네요
그렇게 하면 문제가 있어요. 예를 들어 작성한 글에 외부에서 퍼옴 홈피 내용이
들어 있고 그 홈피내용중에 textarea가 있는 경우 입니다.
그런데 htmlentities를 써버리면 전체가 다 plain html 코드가 되어서 퍼온 화면이
보이는게 아니라 그 화면의 html code가 보이게 되는 겁니다.

쉬운거면 제가 고민을 안하죠 ㅠ..ㅠ
이렇게 해보세요..

$str = "<h3>hi</h3>abcdefg<br><p>aaa</p>
<textarea name=\"content\" cols=\"32\" rows=\"4\">---></textarea>";

$str = preg_replace("/<textarea(.*)>/iUs", "&lt;textarea\\1&gt;", $str);
$str = preg_replace("/<\/textarea>/iUs", "&lt;/textarea&gt;", $str);
<?
$x = '<a>sdfsfsdf<textarea name="content" cols="32" rows="4">---></textarea>sdfsdfdsf</a>';

echo preg_replace("/<(textarea[^>]*)>([^<]*)<(\/textarea)>/i", "&lt;$1&gt;\n$2\n&lt;$3&gt;", $x);
?>

$2 가 조금 헷갈리네요.

머리가 아파서 여기까지만 올리겠습니다.
일단 나창호님께 cheditor에 데이타를 초기화 할 때 변경을 해달라고 했습니다. ㅠ..ㅠ
이거 때문에 웹문서 편집기에 textarea가 있는거 수정할 때 문제가 생기더라구요.

저는 <textarea>를 <table><tr><td> ... </td></tr></table> 로 바꿔보려구요.

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기
🐛 버그신고