PREG_MATCH MODIFICADOR desconocido para obtener datos -- php campo con html campo con preg-match campo con delimiter camp Relacionados El problema

preg_match Unknown modifier for getting data


-1
vote

problema

Español

Tengo un sitio web, que necesita leer información de otro sitio web. Y mostrarlo.

Actualmente estoy usando un sitio web diferente como ejemplo. Sin embargo, todavía no funciona.

El código que tengo:

  comments0  

Si tiene razón, debería darme el título de la página.

Sin embargo, obtengo este error:

  comments111  

Recibo el error en esta línea:

  comments2  

Ahora he leído algo sobre los delimitadores. Sin embargo, simplemente no puedo entenderlo todavía: /

¿Alguien sabe cómo solucionar esto?

Original en ingles

I have a website, that needs to read information from another website. And show it.

Currently i'm using a different website as example. However it does not work yet.

The code i have:

function getHTML($url,$timeout) {        $ch = curl_init($url); // initialize curl with given url        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER["HTTP_USER_AGENT"]); // set  useragent        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // write the response to a variable        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // follow redirects if any        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); // max. seconds to execute        curl_setopt($ch, CURLOPT_FAILONERROR, 1); // stop when it encounters an error        return @curl_exec($ch); }  $html=getHTML("https://www.sparkfun.com/",10); preg_match("/<title>(.*)</title>/i", $html, $match); $title = $match[1]; 

If it is right, it should give me the title of the page.

However i get this error:

Warning: preg_match(): Unknown modifier 't' 

I get the error at this line:

preg_match("/<title>(.*)</title>/i", $html, $match); 

Now i have read something about delimiters. However i just can't figure it out yet :/

Does anyone know how to fix this?

           
     
     

Lista de respuestas

1
 
vote

Está usando su regex delimitado (/) dentro del patrón, que ciertamente no está permitido. Así que use otro delimitador (tal vez) o escape esa barra hacia adelante dentro de la

  preg_match("|<title>(.*)</title>|i", $html, $match)   

Con su intento, el motor regex espera que el patrón en sí mismo esté terminado después de la segunda barra (la interior </title ) y trata todo después de eso como modificadores. El primer carácter después de la barra es un t , por lo que se queja de un modificador no definido t .

"Delimiters" se utilizan en "Expresiones regulares compatibles con PERL" ( pcre_...() Funciones) para marcar el extremo de inicio del patrón de expresión real. Que hace que la compilación sea el patrón mucho más efectivo (tiempo de ahorro). Sin embargo, tiene el efecto secundario que cualquier carácter que use como delimitadores (generalmente el / , pero en realidad puede elegir cualquier carácter , no se puede usar directamente dentro del patrón en sí mismo. . Por razones obvias, una vez que lo piensas.

Todo esto está documentado: http://php.net/manual/de /regexp.reference.delimiters.php

 

You are using your regex delimited (/) inside the pattern, which certainly is not allowed. So either use another delimiter (| maybe) or escape that forward slash inside the

preg_match("|<title>(.*)</title>|i", $html, $match) 

With your attempt the regex engine expects the pattern itself to be finished after the second slash (the one inside </title) and treats everything after that as modifiers. The first character following the slash is a t, thus it complains about an undefined modifier t.

"Delimiters" are used in "perl compatible regular expressions" (pcre_...() functions) to mark the start end end of the actual expression pattern. That makes compiling the pattern much more effective (saving time). However it has the side effect that whatever character you use as delimiters (typically the /, but you can actually chose any character) cannot directly be used inside the pattern itself any more. For obvious reasons, once you think about it.

This is all documented: http://php.net/manual/de/regexp.reference.delimiters.php

 
 
         
         

Relacionados problema

1  ¿Cómo puedo usar varios delimitadores en la lista de matriz  ( How can i use multiple delimiters in array list ) 
Quiero preguntarle sobre el siguiente código: string[] seledCats = new string[0]; string condsCats = EzCoding.Web.UI.QueryStringParsing.GetValue( "Co...

187  Eclipse y propiedades de Windows  ( Eclipse and windows newlines ) 
Tuve que mover mi espacio de trabajo de Eclipse desde Linux a Windows cuando mi escritorio se estrelló. Una semana después, lo copio de regreso a Linux, el có...

0  Error delimitador Java [duplicado]  ( Java delimiter error ) 
Esta pregunta ya tiene respuestas aquí : Error de tokenización: java.util.regex.patternyntaxexceptio...

0  Sintaxis para listas de delimitadores en plantilla  ( Syntax for list delimiters in template ) 
Estoy escribiendo una aplicación que le permite al usuario configurar la salida usando plantillas. Por ejemplo: Variables: name = "BoppreH" language = "...

1  C ++ Obtenga ITERATORPOSITION DE DELIMITTER  ( C get iteratorposition of delimiter ) 
¿Podría alguien ayudarme, tengo un problema con el iterador de cuerdas? #include <iostream> #include <string> #include <vector> using namespace std; stri...

0  Tome la línea del archivo de texto, conéctelo a una matriz, divídalo y luego seleccione aleatoriamente una palabra  ( Take line from text file convert it to an array split it and then randomly sel ) 
A partir de ahora, tengo un archivo de texto llamado lol.txt y mi código imprime una línea en el archivo con un "|" entre cada palabra. Por ejemplo, la primer...

0  PHP Cómo generar una cadena que viene después de una cierta palabra clave en un texto largo  ( Php how to output a string that comes after a certain keyword in a long text ) 
Básicamente, quiero tomar un archivo de texto largo (código fuente), encontrar una palabra clave específica en ese archivo, y luego imprimir los siguientes 40...

0  Establecer varias filas delimitadoras en conexión de archivo plano  ( Set multiple row delimiters in flat file connection ) 
Podemos establecer un delimitador de fila para una conexión de archivo plano en SSIS.Pero la pregunta es cómo configurar múltiples delimitadores de filas par...

-3  ¿Cómo puedo obtener awk para ignorar las nuevas líneas de datos?  ( How can i get awk to ignore newlines in data ) 
Tengo que manipular regularmente los datos de texto desordenados que necesito para entrar en campos. He tenido una buena experiencia utilizando el retroceso...

0  Ignorando los delimitadores escapados (comas) con AWK?  ( Ignoring escaped delimiters commas with awk ) 
Si tuviera una cadena con comas escapadas así: a,b,{c,d,e},f,g ¿Cómo puedo usar awk para analizar eso en los siguientes elementos? a b {c,d,e} f g ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos