Me pregunto cómo pude quitar el texto entre paréntesis y los paréntesis a sí mismos en php.

Ejemplo :

ABC (Test1)

Me gustaría eliminar (Test1) y sólo dejar ABC

Gracias

InformationsquelleAutor Belgin Fish | 2010-02-01

7 Comentarios

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

    preg_replace es un perl basado en la expresión regular reemplazar la rutina. Lo que este script no es de partidos de todas las apariciones de un paréntesis de apertura, seguido por cualquier número de caracteres no un paréntesis de cierre, y de nuevo seguido por un paréntesis de cierre, y, a continuación, elimina:

    Expresión Regular desglose:

    /  - 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
    • Usted no debe intentar escapar de la ) en su carácter de clase.
    • por desgracia, esto no quita paréntesis anidados como A (B (C) D) y te deja con A D
    • Si uno está tratando con el texto (como quitar esto de la mitad de mi comentario) – esta función está bien. Anidado entre paréntesis son generalmente no se ve en las cadenas de texto, al menos no en inglés, pero en ecuaciones matemáticas.
    • Gracias por tu breve resumen 🙂
  2. 13

    La aceptó responder a las grandes obras para no paréntesis anidados. Una ligera modificación a la expresión regular que permite trabajar de paréntesis anidados.

    $string = "ABC (Test1(even deeper) yes (this (works) too)) outside (((ins)id)e)";
    echo preg_replace("/\(([^()]*+|(?R))*\)/","", $string);
    • Yo quiero uno así! No se olvide de reemplazar el potencial adicional de espacios en blanco que podría quedarse atrás en la cadena de resultado a pesar de que
  3. 12

    sin regex

    $string="ABC (test)"
    $s=explode("(",$string);
    print trim($s[0]);
    • Esto funciona para «ABC (de prueba)», pero no malo en «ABC (prueba) DEF (más difícil de la prueba)» donde se pone muy, muy confundido.
  4. 12
    $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);

    Funciona mediante un bucle de cada personaje, contando entre paréntesis. Sólo cuando $paren_num == 0 (cuando está fuera de todos los paréntesis) ¿anexar los personajes a nuestra cadena resultante, $new_string.

  5. 4

    La gente, las expresiones regulares NO puede ser utilizado para analizar los idiomas. Los idiomas son aquellos que requieren interpretar (es decir, recordando cuántas paréntesis se encuentran actualmente abiertos).

    Todas las respuestas anteriores se producirá en esta cadena: «ABC (hola (mundo) ¿cómo estás)».

    Leer Jeff Atwood Análisis del Html de La Cthulhu Manera: https://blog.codinghorror.com/parsing-html-the-cthulhu-way/, y, a continuación, utilizar un escrito a mano parser (un bucle a través de los caracteres de la cadena, a ver si el personaje es un paréntesis o no, de mantener una pila) o el uso de un analizador léxico/analizador capaz de analizar un contexto libre de idioma.

    Ver también este artículo de la wikipedia sobre el «lenguaje de adaptar correctamente los paréntesis:» https://en.wikipedia.org/wiki/Dyck_language

  6. 2

    La mayoría de quik método (sin preg):

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

    Si usted no desea recortar los espacios al final de la palabra, solo quitar la función de recorte de código.

Dejar respuesta

Please enter your comment!
Please enter your name here