0

找到很多

关键字=“带引号的文字”

但没有人忽略双引号或单引号关键字=“带引号的文本”或关键字='带引号的文本'

我生成了以下代码,但它不起作用

function GENERIC_FIND_KEYWORD_AND_QUOTED_TEXT($STR)
{ // 关键字=" " 被空格或非符号字符串包围(在 a-zA-Z0-9_ 之外

// 使用 (key1=' embeded qwuotes' AND key2=" embeded qwuotes") !key3=' embeded qwuotes' key4=" embeded qwuotes" ... // 作为输入字符串

   $res=preg_match_all('/[a-zA-Z0-9_]{1,}=("((?:[^\\\]*?(?:\\\")?)*?)"|\'((?:[^\\\]*?(?:\\\')?)*?)\')/', $str, $arr, PREG_SET_ORDER);

print_r($arr);echo ""; // 将

像数组一样 array('key1'=>'text','key2'=>"text" ,'key3'=>'text','key4'=>'text','key5'=>'text' ) }

它不起作用,但应该在符号上的每行匹配多次(定义为 [a-zA-Z0-9_]{1,} 以 = 单引号或双引号结尾,应检测带引号的字符串,忽略中间的引号单引号或双引号....

关键字不是像 XML 中那样被空格包围,而是带有任何非符号字符或空格......例如,我想验证所有 mysql 关键字和匹配结构......

在哪里?使其成为特别感兴趣的关键字

输入输出结构:

输入:很少或没有控制,我不知道用户要输入什么,尤其是要尽可能通用;考虑引用字符串中的所有内容

关键字="bla'bla""dfddfd"或keword2='dfdfd"dsdsdfsdfdf'

确保它必须正确且一致地陈述....

输出:数组(关键字=>“bla'bla”“dfddfd”,keyword2=>'dfdfd“dsdsdfsdfdf',...)

其次:(略有不同的相关问题)我想过滤特殊标记的关键字以稍后替换它们(需要未更改的组件)

关键字="bla'bla""dfddfd"或/和_keword2='dfdfd"dsdsdfsdfdf'

我只得到标记的组件 _*="...." 过滤(假设更改匹配模式更有效,然后循环遍历所有数组元素以查找辅助关键字模式... \

输出:数组(_keyword2=>'dfdfd " dsdsdfsdfdf', ...)

4

1 回答 1

0

正则表达式:

/([^ ]+)\=((\"([^"]+)\")|(\'([^']+)\'))/
于 2012-08-03T17:18:24.850 回答