괄호 사이의 텍스트 제거 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
'programing' 카테고리의 다른 글
드롭다운에 React JS를 사용한 OnChange 이벤트 (0) | 2023.01.22 |
---|---|
Maven 빌드 실패: "Javac 컴파일러를 찾을 수 없음: jre 또는 jdk 문제" (0) | 2023.01.22 |
스프링 부트 JPA 휴지 상태 - 밀리초의 정밀도로 저장 날짜 (0) | 2023.01.22 |
dict 목록에서 값 목록 가져오기 (0) | 2023.01.22 |
Python 'for' 루프에서 범위 지정 (0) | 2023.01.22 |