[英]extracting string with preg_match
我有包含破折號-字符的字符串,我希望在遇到第一個破折號字符之前提取字符串的一部分, 除非破折號用單/雙引號引起來。
即。
理論“ Gabe B-裁縫”夾克-nordstrom.com我要提取理論“ Gabe B-裁縫”夾克
理論“ Gabe B-裁縫”夾克-nordstrom.com我要提取理論“ Gabe B-裁縫”夾克
裁縫外套-夾克-nordstrom.com我要提取裁縫外套
我可以在preg_match中使用什么正則表達式來達到結果?
您可以使用這樣的表達式來處理單引號和雙引號(不使用轉義符):
(?:[^-]+|"[^"]*"|'[^']*')+
或者只是捕獲所有內容直到最后-
:
(.+)-
非正則表達式的替代品呢?
$input = "'Gabe B - Tailor' Jacket - nordstrom.com";
$insideQuotes = false;
for ($i=0 ; $i<strlen($input) ; $i++) {
if (!$insideQuotes && $input[$i] == "-") {
break;
}
if ($input[$i] == "'" || $input[$i] == '"') {
$insideQuotes = !$insideQuotes;
continue;
}
}
echo substr($input, 0, $i);
我相信您正在尋找此正則表達式-
([^-"']|"[^"]*"|'[^']*')*?(?=\s*\-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.