2009-09-02 11 views
5

ich einen Text Titel haben, dieVerwenden regex/php Text innerhalb Zitate lesen

This User "The Title Of The Post" 

ich nur, was nach innen von den Anführungszeichen greifen wollen liest, und speichern sie in einer Variablen. Wie würde ich das mit Regex und PHP machen?

Antwort

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

Das gleiche, das ich mir ausgedacht hatte. :-) –

+0

nicht global:, - ( –

+1

Das Plakat fragte nach "was ist in den Anführungszeichen" und die akzeptierte Lösung enthält Anführungszeichen. Meine Lösung schließt Anführungszeichen aus wie das Plakat angefordert. – 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 wird 1 sein, wenn es ein erfolgreiches Spiel, 0 anders gemacht. $whats_inside_the_quotes enthält die Zeichenfolge, die im Satz von Klammern in der Regex übereinstimmt.

Falls es ein wenig unklar ist (es ist), gibt preg_match() tatsächlich einen Wert $matches (das dritte 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 - könnte jemand von euch bitte diese Antwort ein bisschen erklären ... Ich bin noch neu bei Regex Ich möchte eine ähnliche Aufgabe machen - "lies die Zahl direkt nach' site_ids == 'aus' site_ids == 34 || sales_region == 45' "(dh regex sollte 34 zurückgeben.) Ich habe es mit' preg_match ('/^ [^ site_ids ==] * || ([^ ||] *) "$/', $ str, $ Übereinstimmungen);' nach '$ str =' site_ids == 34 || sales_regio n == 45 '; 'und kein Ergebnis erhalten. Ich bin mir nicht sicher, ob '|' fliehen muss. Das Trennzeichen in der Frage ist ein Anführungszeichen ('' '), in meinem Fall sind das' site_ids == 'und' || '. Was wäre für mich die korrekte Regex? Danke. –