问题
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 and have only the text (without the double quotes):
Your Balance left $0.10
I have tried preg_match_all()
but with no luck.
回答1:
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
回答2:
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.
回答3:
Try this :
preg_match_all('`"([^"]*)"`', $string, $results);
You should get all your extracted strings in $results[1].
回答4:
Unlike other answers, this supports escapes, e.g. "string with \" quote in it"
.
$content = stripslashes(preg_match('/"((?:[^"]|\\\\.)*)"/'));
回答5:
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];
回答6:
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.
来源:https://stackoverflow.com/questions/1017051/php-to-extract-a-string-from-double-quote