php to extract a string from double quote

前端 未结 6 1902
灰色年华
灰色年华 2020-12-05 03:08

I have a string:

This is a text, \"Your Balance left $0.10\", End 0

How can I extract the string in between the double quotes an

相关标签:
6条回答
  • 2020-12-05 03:17

    Just use str_replace and escape the quote:

    str_replace("\"","",$yourString);
    

    Edit:

    Sorry, didnt see that there was text after the 2nd quote. In that case, I'd simply to 2 searches, one for the first quote and one for the 2nd quote, and then do a substr to extra all stuff between the two.

    0 讨论(0)
  • 2020-12-05 03:32

    As long as the format stays the same you can do this using a regular expression. "([^"]+)" will match the pattern

    • Double-quote
    • At least one non-double-quote
    • Double-quote

    The brackets around the [^"]+ means that that portion will be returned as a separate group.

    <?php
    
    $str  = 'This is a text, "Your Balance left $0.10", End 0';
    
    //forward slashes are the start and end delimeters
    //third parameter is the array we want to fill with matches
    if (preg_match('/"([^"]+)"/', $str, $m)) {
        print $m[1];   
    } else {
       //preg_match returns the number of matches found, 
       //so if here didn't match pattern
    }
    
    //output: Your Balance left $0.10
    
    0 讨论(0)
  • 2020-12-05 03:32

    For everyone hunting for a full featured string parser, try this:

    (?:(?:"(?:\\"|[^"])+")|(?:'(?:\\'|[^'])+'));
    

    Use in preg_match:

    $haystack = "something else before 'Lars\' Teststring in quotes' something else after";
    preg_match("/(?:(?:\"(?:\\\\\"|[^\"])+\")|(?:'(?:\\\'|[^'])+'))/is",$haystack,$match);
    

    Returns:

    Array
    (
        [0] => 'Lars\' Teststring in quotes'
    )
    

    This works with single and double quoted string fragments.

    0 讨论(0)
  • 2020-12-05 03:32

    Try this :

    preg_match_all('`"([^"]*)"`', $string, $results);
    

    You should get all your extracted strings in $results[1].

    0 讨论(0)
  • 2020-12-05 03:32

    The regular expression '"([^\\"]+)"' will match anything between two double quotes.

    $string = '"Your Balance left $0.10", End 0';
    preg_match('"([^\\"]+)"', $string, $result);
    echo $result[0];
    
    0 讨论(0)
  • 2020-12-05 03:36

    Unlike other answers, this supports escapes, e.g. "string with \" quote in it".

    $content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
    
    0 讨论(0)
提交回复
热议问题