2014-10-06 6 views
1

엄청난 양의 데이터를 제거하고 최종 문자열의 처음과 끝에 불필요한 구두점이있는 많은 깨끗한 데이터 예제를 찾습니다. 따옴표 및 DoubleQuote는 괜찮지 만 선행/후행 대시, 쉼표 등을 제거해야합니다.RegEx를 사용하여 PHP에서 특정 선행 및 후행 구두점을 제거하는 방법

나는 대답을 How can I remove all leading and trailing punctuation?에서 연구했으나 PHP에서이를 수행 할 수있는 방법을 찾을 수 없습니다. 한마디로

- some text.    dash and period should be removed 
"Some Other Text".   period should be removed 
it's a matter of opinion apostrophe should be kept 
/some more text?   Slash should be removed and question mark kept 

,

    최초의 영숫자 문자가 마지막 영숫자 문자 이후에 발생
  • 특정 문장 부호를 제거해야합니다 전에 발생
  • 특정 문장 부호를 제거해야합니다

어떻게 할 수 PHP를 사용하여이 작업을 수행했습니다. 내가 찾은 몇 가지 예가 제 RegEx/JS abilites를 능가합니다.

+0

'- some text.'에 대시 뒤에 공백을두고'/ some more text? '에 슬래시를 두거나 제거해야합니까? –

+0

궁극적으로, 모든 것을 다듬어야하며 앞뒤에 공백이 없어야합니다.하지만 PHP의 루틴은 저장하기 전에 수행합니다. – GDP

+0

's |^[/ \ s \ -] ||','s | [. \ s/\ -] $ ||', 기본적으로 –

답변

0

요를 왼쪽 문자를 포함하도록 패턴을 수정할 수 있습니다.

+0

이것을 이해하려고 시도하는 중 ... 후행 "?"은 허용하지만 선두 "?"는 허용하지 않도록 어떻게 수정하겠습니까? – GDP

+2

@GDP 종결 자의 일부 자막 검열자인 것처럼 보이는 두 줄은 앞과 뒤의 패턴입니다. '['와']'사이에 제거하고자하는 문자를 넣습니다.표시되는 문자는 정규식의 특수 문자이기 때문에 백 슬래시로 이스케이프 처리됩니다. –

+1

preg_replace ('#^[./?-]* | [./- ]*$#', '', $ string); – OIS

1

이것은 정규식이없는 답변입니다.

당신은 기능 trim (또는 조합하여 사용할 수 있습니다 ltrim/rtrim 제거 할 모든 문자를 지정하는 예를 들면 다음과 같습니다.

$str = trim($str, " \t\n\r\0\x0B-."); 

(난 당신이 또한 간격과 줄 바꿈을 제거 할 생각으로 지정된 시작/끝에서, 나는 기본 마스크)

당신이 처음에 같은 charlist하고 문자열의 끝을 제거하지 않는 경우도 참조 RTRIM과 LTRIM

.

+0

Taht는 마침표뿐만 아니라 마침표로 시작합니다. ? – GDP

+0

굿로드 .... 만약 뱀이 되었다면, 나를 물 렸을 것입니다. Lol – GDP

+0

네,하지만 마침표가있는'ltrim'과'rtrim' 두 가지 기능을 여러분의 필요에 맞추어 적용 할 수 있습니다. 정규 표현식이 포함 된 함수보다 훨씬 빠릅니다 – Asenar

관련 문제