我有一個包含雙引號或單引號的字符串。我需要做的就是呼應報價之間的一切:在引號之間獲取字符串
$str = "'abc de', xye, jhy, jjou";
$str2 = "\"abc de\", xye, jhy, jjou";
我不介意使用正則表達式(的preg_match),或內置功能的任何其它的PHP。
請指教。
問候,
我有一個包含雙引號或單引號的字符串。我需要做的就是呼應報價之間的一切:在引號之間獲取字符串
$str = "'abc de', xye, jhy, jjou";
$str2 = "\"abc de\", xye, jhy, jjou";
我不介意使用正則表達式(的preg_match),或內置功能的任何其它的PHP。
請指教。
問候,
$str = "'abc de', xye, \"jhy\", blah blah 'bob' \"gfofgok\", jjou";
preg_match_all('/".*?"|\'.*?\'/', $str, $matches);
print_r($matches);
這將返回:
Array (
[0] => Array (
[0] => 'abc de'
[1] => "jhy"
[2] => 'bob'
[3] => "gfofgok"
)
)
正則表達式的說明:
" -> Match a double quote
.* -> Match zero or more of any character
?" -> Match as a non-greedy match until the next double quote
| -> or
\' -> Match a single quote
.* -> Match zero or more of any character
?\' -> Match as non-greedy match until the next single quote.
所以$matches[0]
是包含單個或雙引號中存在的所有字符串數組。
爲什麼不把它們合併成一個,比如'([''])(。*?)\ 1'? – Wiseguy
是的,我希望能夠合併一些東西,因爲這會在foreach循環中執行 –
@HassanZ I'我已經更新了我的回答, –
正則表達式都沒有,即使它們看起來嚇人開始有教程或者它是一個樣子那麼複雜文檔就會清晰很多
按您的問題,對此看看,並嘗試使用它
$str = "'abc de', xye, jhy, jjou";
$str2 = "\"abc de\", xye, jhy, jjou";
$match = $match2 = array();
preg_match("/'(.+)'/", $str, $match);
preg_match("/\"(.+)\"/", $str2, $match2);
print_r($match);
print_r($match2);
之前瞭解它
此問題沒有顯示任何研究工作。 **做你的作業很重要**。告訴我們你發現了什麼,***爲什麼它不符合你的需求。這表明你已經花時間去嘗試幫助你自己了,它使我們避免重申明顯的答案,最重要的是它可以幫助你得到更具體和相關的答案。 [FAQ](http://stackoverflow.com/questions/how-to-ask)。 –
我對正則表達式沒有太多的知識。我可以嘗試其他功能,但我知道的任何需要知道的字符串位置。在這種情況下,報價並不總是在第一位。 –