2009-09-02 5 views

Respuesta

8

http://www.php.net/preg_match

<?php 
$x = 'This User "The Title Of The Post"'; 

preg_match('/".*?"/', $x, $matches); 

print_r($matches); 

/* 
    Output: 
    Array 
    (
     [0] => "The Title Of The Post" 
) 

*/ 
?> 
+0

Lo mismo que se me ocurrió. :-) –

+0

no global:, - ( –

+1

El cartel preguntaba "lo que está dentro de las comillas" y la solución aceptada incluye comillas. Mi solución no incluye comillas como el cartel solicitado. – Asaph

1
<?php 

$string = 'This User "The Title Of The Post"'; 

preg_match_all('/"([^"]+)"/', $string, $matches); 

var_dump($matches); 
1
$string = 'This user "The Title Of The Post"'; 

$its_a_match = preg_match('/"(.+?)"/', $string, $matches); 
$whats_inside_the_quotes = $matches[1]; 

$its_a_match será 1 si se hizo una persona compatible, de lo contrario 0. $whats_inside_the_quotes contendrá la cadena coincidente en el conjunto de paréntesis en la expresión regular.

En caso de que sea un poco confuso (es), preg_match() en realidad da un valor a $matches (el tercer argumento).

1

$str = 'This User "The Title Of The Post"'; 
$matches = array(); 
preg_match('/^[^"]*"([^"]*)"$/', $str, $matches); 
$title = $matches[1]; 
echo $title; // prints The Title Of The Post 
+0

@opello, @Patrick - ¿podría alguno de ustedes explicar esta respuesta un poco? Todavía soy nuevo en Regex. Quiero hacer una tarea similar: "leer el número justo después de' site_ids == 'de' site_ids == 34 || sales_region == 45' "(es decir, regex debería devolver 34). Intenté con' preg_match ('/^ [^ site_ids ==] * || ([^ ||] *) "$/', $ str, $ coincidencias);' después de '$ str =' site_ids == 34 || sales_regio n == 45 '; 'y sin obtener resultado. No estoy seguro de si '|' necesita escapar. El delimitador en la pregunta es una comilla doble ('" ') mientras que en mi caso son' site_ids == 'y' || '. ¿Cuál sería la expresión correcta para mí? Gracias. –

Cuestiones relacionadas