programing

괄호 사이의 텍스트 제거 PHP

kingscode 2023. 1. 22. 22:40
반응형

괄호 사이의 텍스트 제거 PHP

php에서 괄호 세트와 괄호 사이의 텍스트를 어떻게 삭제할 수 있는지 궁금할 뿐입니다.

예:

ABC(테스트1)

(Test1)을 삭제하고 ABC만 남기고 싶습니다.

감사해요.

$string = "ABC (Test1)";
echo preg_replace("/\([^)]+\)/","",$string); // 'ABC '

preg_replace는 Perl 기반의 정규 표현 치환 루틴입니다.이 스크립트는 여는 괄호, 닫는 괄호가 아닌 임의의 수의 문자와 일치하고 닫는 괄호를 다시 한 번 반복하여 삭제합니다.

정규 표현식 분석:

/  - opening delimiter (necessary for regular expressions, can be any character that doesn't appear in the regular expression
\( - Match an opening parenthesis
[^)]+ - Match 1 or more character that is not a closing parenthesis
\) - Match a closing parenthesis
/  - Closing delimiter

네스트되지 않은 괄호에는 허용되는 답변이 매우 적합합니다.정규식을 약간 수정하면 중첩된 괄호에서 작업할 수 있습니다.

$string = "ABC (Test1(even deeper) yes (this (works) too)) outside (((ins)id)e)";
echo preg_replace("/\(([^()]*+|(?R))*\)/","", $string);

정규식을 사용하지 않고

$string="ABC (test)"
$s=explode("(",$string);
print trim($s[0]);
$string = "ABC (Test1(even deeper) yes (this (works) too)) outside (((ins)id)e)";
$paren_num = 0;
$new_string = '';
foreach($string as $char) {
    if ($char == '(') $paren_num++;
    else if ($char == ')') $paren_num--;
    else if ($paren_num == 0) $new_string .= $char;
}
$new_string = trim($new_string);

각 문자를 반복하고 괄호를 세면 동작합니다.할 때만$paren_num == 0(모든 괄호 밖에 있는 경우) 결과 문자열에 문자가 추가됩니까?$new_string.

대부분의 퀴크 방식(예약 없음):

$str='ABC (TEST)';
echo trim(substr($str,0,strpos($str,'(')));

단어 끝의 공백을 자르지 않으려면 코드에서 자르기 기능을 제거하십시오.

$str ="ABC (Test1)";    
echo preg_replace( '~\(.*\)~' , "", $str );      

여러분, 정규 표현은 비정규 언어를 구문 분석할 때 사용할 수 없습니다.비정규 언어는 해석하기 위해 상태가 필요한 언어입니다(즉, 현재 열려 있는 괄호 수 기억).

위의 모든 답변은 이 문자열에서 실패합니다. "ABC ( world ) how are you"

Jeff Atwood의 해석Html Cthulhu Way: https://blog.codinghorror.com/parsing-html-the-cthulhu-way/, 를 읽고 직접 작성한 파서를 사용하거나(문자 내의 문자를 반복하여 괄호인지 확인, 스택 유지 관리), 컨텍스트가 필요 없는 언어를 해석할 수 있는 렉서/파서를 사용합니다.

또한 "적절하게 일치하는 괄호 언어:"에 대한 위키피디아 기사도 참조하십시오.https://en.wikipedia.org/wiki/Dyck_language

언급URL : https://stackoverflow.com/questions/2174362/remove-text-between-parentheses-php

반응형