Foros del Web » Programando para Internet » PHP »

Escapar string para preg_match

Estas en el tema de Escapar string para preg_match en el foro de PHP en Foros del Web. Buenas! Me gustaría saber cómo escapar esta string para hacer preg_match $regex = '<span class="yt-subscription-button-subscriber-count-branded-horizontal subscribed">(.*)</span>'; preg_match($regex, $result, $matches); Muchas gracias! Un saludo...
  #1 (permalink)  
Antiguo 06/09/2013, 08:26
Avatar de xkz
xkz
 
Fecha de Ingreso: junio-2012
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 0
Escapar string para preg_match

Buenas!

Me gustaría saber cómo escapar esta string para hacer preg_match

$regex = '<span class="yt-subscription-button-subscriber-count-branded-horizontal subscribed">(.*)</span>';

preg_match($regex, $result, $matches);


Muchas gracias! Un saludo
  #2 (permalink)  
Antiguo 06/09/2013, 08:36
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Escapar string para preg_match

Cita:
Iniciado por xkz Ver Mensaje
Buenas!

Me gustaría saber cómo escapar esta string para hacer preg_match

$regex = '<span class="yt-subscription-button-subscriber-count-branded-horizontal subscribed">(.*)</span>';

preg_match($regex, $result, $matches);


Muchas gracias! Un saludo
¿Por qué quieres comparar también una etiqueta HTML?

El escapado de caracteres es para validar consultas SQL.

¿Por qué quieres escapar caracteres si no es para una consulta SQL?

Date cuenta que el escapado, ya sea con mysqli_real_escape_string como con mysqli_escape_string tienen que tener el conjunto de caracteres establecido a nivel de servidor y necesitan un id de conexión devuelto por mysqli_connect, esos valores solo se entienden en el ámbito de una consulta. Fuera no tiene mucho sentido
¿no crees?
__________________
Ayúdame a hacerlo por mi mismo.
  #3 (permalink)  
Antiguo 06/09/2013, 08:44
Avatar de xkz
xkz
 
Fecha de Ingreso: junio-2012
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Escapar string para preg_match

Discúlpame, me refería a usar delimitadores en la string, ya que estoy intentando hacer curl para obtener el número de suscriptores de un canal en youtube y no la debo estar haciendo bn :S

Dejo aquí el code completo
Código:
<?php

//YOUTUBE INTEL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.youtube.com/user/channelintel");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: es-es,en"));
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


//GUARDAR PAGINA
$result = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);


//PARSEAR
$regex = '<span class="yt-subscription-button-subscriber-count-branded-horizontal subscribed">(.*)</span>'; //AQUÍ ESTÁ SIN DELIMITAR
preg_match($regex, $result, $matches);

$suscriptores = $matches[0];
echo "Suscriptores: " . $suscriptores;




?>
  #4 (permalink)  
Antiguo 06/09/2013, 09:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Escapar string para preg_match

Por favor lee el manual: http://www.php.net/manual/es/regexp....delimiters.php

Agregar los delimitadores no te hubiera llevado más de unos segundos después de haber leído el manual, cosa fácil.

Cita:
|<tag>(.*)</tag>|
@<tag>(.*)</tag>@
#<tag>(.*)</tag>#
/<tag>(.*)<\/tag>/

etc.
Claro, usar un delimitador u otro tiene sus restricciones, pero todo eso se explica en el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 06/09/2013, 09:47
Avatar de xkz
xkz
 
Fecha de Ingreso: junio-2012
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Escapar string para preg_match

Cita:
Iniciado por pateketrueke Ver Mensaje
Por favor lee el manual: [url]http://www.php.net/manual/es/regexp.reference.delimiters.php[/url]

Agregar los delimitadores no te hubiera llevado más de unos segundos después de haber leído el manual, cosa fácil.



Claro, usar un delimitador u otro tiene sus restricciones, pero todo eso se explica en el manual.
Gracias, lo había leído ya. Igual que muchos posts del foro. Precisamente, si lo pongo aquí no es porque no haya estado bastante tiempo buscando...

En mi caso particular, incluyendo como me dices los delimitadores, me sale que la variable se encuentra fuera de rango :S Y no me deja mostrarla.
  #6 (permalink)  
Antiguo 06/09/2013, 09:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Escapar string para preg_match

Por favor muestra el mensaje de error completo y el código corregido, así nos evitas tener que adivinar lo que haces mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 06/09/2013, 09:58
Avatar de xkz
xkz
 
Fecha de Ingreso: junio-2012
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Escapar string para preg_match

Código:
<?php
//YOUTUBE INTEL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.youtube.com/user/channelintel');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept-Language: es-es,en"));
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);


//GUARDAR PAGINA
$result = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);


//PARSEAR
$regex = '/<span class="yt-subscription-button-subscriber-count-branded-horizontal subscribed">(.*)<\/span>/';
preg_match_all($regex, $result, $matches);

$suscriptores = $matches[1][0]; //LINEA 22
echo "Suscriptores: " . $suscriptores;



?>
El error que salta es:
Código:
Notice: Undefined offset: 0 in /Applications/MAMP/htdocs/curl1.php on line 22
  #8 (permalink)  
Antiguo 06/09/2013, 10:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Escapar string para preg_match

Bueno, para que conozcas exactamente la estructura del array que te da error puedes usar var_dump(), así te enteras si existe o no el índice que buscas,

Además, la función preg_match_all() devuelve una integer en relación a cuántas capturas se hicieron.

Necesitas aprender a depurar tu código, cosas tan simples como ir leyendo el manual e inspeccionar cada resultado ayudan a descifrar lo que está mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 06/09/2013, 10:12
Avatar de xkz
xkz
 
Fecha de Ingreso: junio-2012
Mensajes: 24
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: Escapar string para preg_match

Cita:
Iniciado por pateketrueke Ver Mensaje
Bueno, para que conozcas exactamente la estructura del array que te da error puedes usar var_dump(), así te enteras si existe o no el índice que buscas,

Además, la función preg_match_all() devuelve una integer en relación a cuántas capturas se hicieron.

Necesitas aprender a depurar tu código, cosas tan simples como ir leyendo el manual e inspeccionar cada resultado ayudan a descifrar lo que está mal.
Gracias por tu atención.

Los resultados que arroja son array(2) { [0]=> array(0) { } [1]=> array(0) { } }

Seguiré leyendo e investigando para intentar corregir lo que hago mal.

Un saludo

Etiquetas: escapar, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:30.