2014-02-15 2 views
0

일반적으로 줄 바꿈과 탭을 제거하여 내 출력을 줄이는 기능을 사용하고 싶지만 문제는 정상적인 코드와 같습니다.preg replace : 제목 속성 바깥 쪽의 모든 줄 바꿈 대체

return str_replace(array("\r\n", "\t"), '', $s); 

또한 제목 속성 (예 : 단어 위로 이동하면 툴팁이 나타남)이 축소되어 줄 바꿈이 손실됩니다. 나는 title = "textwithlinebreakhere"안에있는 줄 바꿈을 유지하려고하지만 바깥 줄 바꿈은 모두 제거합니다.

나는 그것을 어떻게 실현해야할지 모르겠으므로 나를 도울 수 있기를 바랍니다.

감사합니다.

답변

0

preg_replace_all()을 사용하고 (?<!your_match_here) 및 해당 형제를 사용해야합니다. 내가 형제가 뜻하는 것은 negative_lookbehind과 캐릭터가

+0

문제는 또한 비 제외 어 검색을 일치하는 솔루션을하지 않기 때문에 나는 단지 모든 행을 제거 할 방법입니다 제목 태그 안에서 나눕니다. preg_replace ('/ title = "(. *)"/ ",' ', $ s); 모든 것을 완전히 제거합니다 ... 죄송합니다. 그러나 저는이 기능을 실제로 사용하지 않았고 난감했습니다. – tan

+0

문자 그대로 이야기합시다. 당신은 regexp에게 말해야한다 : 모든 br 태그는 제거하고 title = "and before"뒤에 오는 thos는 제거하십시오. 이제 당신은 두뇌가 이것을 해결하도록 강요해야합니다. 쉽습니다. 내가 그것을 발견하게해라. 그러면 나는 그것을 게시 할 것이다 –

+0

그래, 그것은 쉽게 들린다. 지금 몇 시간 씩 노력하고 있지만 끝내지는 마세요. 내가 예를 들어 주시겠습니까? 예를 들어, – tan

0

trim_all()와 원하지 않는 문자를 제거 후 또는 특정 문자/기호/숫자 전의 경우는 어떤 조건 검색 알고리즘을 positive_lookbehind은 볼 - PHP :

규정

이 기능은 는이 에 두 번째 인수로 제공 그러한 문자 트림을 문자열의 시작과 끝에서 원하지 않는 문자를 제거하지 않으며, 경우에 트림 PHP의 내장 함수에서 영감을받은, 공백 문자를 제거 이 목록에

그래서 trim_all() 의 기능은 무엇입니까?

trim_all() 은 문자열의 양쪽 끝에서 공백의 모든 인스턴스를 제거하고 문자열 안의 중복 된 공백 문자를 제거하기위한 것입니다. 그러나 나중에 필자는 화이트 스페이스 트리밍 및 클리닝보다 조금 더 많은 작업을 수행하는 범용 함수로 만들었으며 문자 교체 및 문자 교체를 허용했습니다. 이 기능을 수행 할 수 있습니다 : 그것은 모든 여러 \ r에가, \ n, \ (t)가, \ 연구 \ n \ 0에는 0x0B는 0x20에 모든 제어 문자가 될 수 있도록

  1. 는 화이트 스페이스를 정상화 단일 공백으로 대체되고 문자열의 양쪽 끝에서 트림됩니다.

  2. 모든 원하지 않는 문자를 제거하십시오.

  3. 중복 제거;

  4. 문자 또는 문자열로 여러 번 나타나는 문자를 바꿉니다. 당신이 사용자의 입력에서 원치 않는 문자를 제거 할 때


function trim_all($str , $what = NULL , $with = ' ') 
{ 
    if($what === NULL) 
    { 
     // Character  Decimal  Use 
     // "\0"   0   Null Character 
     // "\t"   9   Tab 
     // "\n"   10   New line 
     // "\x0B"   11   Vertical Tab 
     // "\r"   13   New Line in Mac 
     // " "   32   Space 

     $what = "\\x00-\\x20"; //all white-spaces and control chars 
    } 

    return trim(preg_replace("/[".$what."]+/" , $with , $str) , $what); 
} 

이 기능은 도움이 될 수 있습니다. 사용 방법이 나와 있습니다.

사용 예 :

$full_name = trim_all($_POST['full_name']); 

또는

$full_name = trim_all($full_name , "\t" , ""); 
관련 문제