2009-09-02 13 views

Odpowiedz

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

To samo, co wymyśliłem. :-) –

+0

nie globalny:, - ( –

+1

Na plakacie pytano o "co słychać WEWNĄTRZ cudzysłowów", a przyjęte rozwiązanie zawiera cudzysłowy.Moje rozwiązanie wyklucza cudzysłowy z żądanego plakatu – 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 będzie 1 jeśli dokonał udanego meczu, inaczej 0. $whats_inside_the_quotes będzie zawierał ciąg dopasowany w zestawie nawiasów w wyrażeniu regularnym.

W przypadku, gdy jest nieco niejasne (jest), preg_match() faktycznie daje wartość $matches (trzeci argument).

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 - czy ktokolwiek z was mógłby wyjaśnić tę odpowiedź troszeczkę ... Wciąż jestem nowy regex. Chcę wykonać podobne zadanie - "odczytaj liczbę zaraz po' site_ids == 'z' site_ids == 34 || sales_region == 45' "(tzn. regex powinien zwrócić 34). Próbowałem z' preg_match ('/^ [^ site_ids ==] * || ([^ ||] *) "$ /", $ str, $ mecze); 'po' $ str = 'site_ids == 34 || sales_regio n == 45 '; 'i brak rezultatów. Nie jestem pewien, czy '' 'potrzebuje ucieczki. Separator w pytaniu to podwójny cudzysłów ('' '), podczas gdy w moim przypadku są to' site_ids == 'i' || '. Jaki byłby dla mnie poprawny regex? Dzięki. –