[英]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.