2011-11-02 1 views
1

MySQL의 PREG_REPLACE 함수에 this UDF을 사용하고 있으며 모든 것이 제대로 작동하는 것 같습니다. 그러나 지금은 내 목표는 열의 pre 태그 안의 엔티티를 찾아서 인코딩하는 것입니다. 그래서 결국 나는이를 좀하고 싶습니다 :MySQL의 PREG_REPLACE 및 PREG_REPLACE_EVAL

:이 같은 pre 태그 내부의 콘텐츠를 찾기 위해 preg_replace이다 기능을 사용하고

<pre> 
    &lt;strong&gt;Hello World!&lt;/strong&gt; 
</pre> 

을 :

<pre> 
    <strong>Hello World!</strong> 
</pre> 

는 다음과 같이하기

SELECT PREG_REPLACE('/<pre>(.*?)<\\/pre>/sm', '\\1', '<pre><strong>Hello World</strong></pre>'); 

이제는 \\1을 "ENCODE_ENTITIES('\\1')"으로 바꿀만한 내용으로 바꾸고 싶습니다. 분명히과 같은 다른 기능이 될 수 있습니다. 예를 들어이지만 UPPER('\\1')은별로주지 않습니다. MySQL은 비슷한 구현하는 방법에 대한

preg_replace("/(<\/?)(\w+)([^>]*>)/e", 
    "'\\1'.strtoupper('\\2').'\\3'", 
    $html_body); 

어떤 아이디어 : I 가지 이런 식으로 뭔가를 할 수 있습니다 preg_replace의 PHP의 구현 PREG_REPLACE_EVAL의 생각처럼? 아니면 내가 잘못 가고있는 것일까 요? 감사!

+1

pre는 다른 pre 요소와 중첩되지 않습니까? – FailedDev

+0

@FailedDev 네, 적어도 제 경우에는 꽤 확신합니다.하지만 당신이 옳다면 우리가주의해야 할 부분입니다. 감사! – kovshenin

+0

당신은 그것을 조심할 수 없습니다. 이 경우 regex는이 작업을위한 좋은 해결책이 아닙니다. 사전 요소에 다른 사전 요소가 포함되지 않는다고 100 % 확신하면 현재 문제에 대한 해결책을 제시 할 수 있습니다. – FailedDev

답변

1

UDF의 소스 코드를 수정하여 해당 기능을 추가하고 싶지 않다면 MySQL에서 그렇게 할 방법이 없습니다. 좋아하는 프로그래밍 언어를 선택하고 업데이트를 작성하는 프로그램을 작성하거나 데이터가 데이터베이스에 도달하기 전에이 수정이 수행되는지 확인하십시오.