2014-02-28 14:31

# 计算字符串中不带反斜杠的引号数

I'm using the following expression to find the number of occurences of `'` and `"` in a string I don't want the count to include `\'` or `\"`.

``````\$subStr = 'asdf"asdf""a\\"sdf\'asdf\'\'a\\\'sdf';
preg_match_all('/[^\\\\]\'|[^\\\\]\"/', \$subStr, \$matches);
echo count(\$matches[0]);
``````

I expect it to return 6 but it only returns `4`. I think this is because the strings `""` and `''` are only count once.

This is what `\$matches` contain:

``````Array
(
[0] => Array
(
[0] => f"
[1] => f"
[2] => f'
[3] => f'
)

)
``````

Is there any way I can get the count of `6`? Note that I also need to exclude the `\"` and `\'`.

#### 图片转代码服务由CSDN问答提供 功能建议

``````   \$ subStr ='asdf“asdf”“a \\”sdf \'asdf \'\'a \\\'sdf';
npreg_match_all（'/ [^ \\\\] \'| [^ \  \\\] \“/'，\$ subStr，\$ matches）;
echo count（\$ matches [0]）;

我希望它返回6 但它只返回 4 。我认为这是因为字符串“”和''只计算一次。

这是 \$ matches 包含：

Array
（
[0] =＆gt; Array
（\  n [0] =＆gt; f“
[1] =＆gt; f”
[2] =＆gt; f'
[3] =＆gt; f'
）

）
<  / code>

有什么方法可以得到 6 的数量吗？注意我还需要排除 \“ 和 \'。
``````
` `
``` 写回答 好问题 提建议 追加酬金 关注问题 收藏 分享 邀请回答 ```
``` 4条回答 默认 最新 dongzhuo6137 2014-02-28 14:33 已采纳 Why doesn't it work You can't use a character class to match a character not preceded by another character. This is because a character class (negated or not) must still match a character. For example, [^a]b does not mean "b not preceded by a". It means: "a character that's not a followed by b". The Solution If you want to match a single-quote or double-quote character not preceded by a backslash, then you'll have to use a lookaround expression (a negative lookbehind, specifically). The regex you're looking for is (?<!\\\\)[\'"]. Autopsy: (?<! - start of the lookbehind expression \\\\ - match a literal backslash character ) - end of the lookbehind expression [\'"] - character class that matches a single character from the list "' Visual Representation: This effectively matches any single-quote / double-quote character that is not preceded by a literal backslash character. Using the above expression with preg_match_all is simple: \$subStr = 'asdf"asdf""a\\"sdf\'asdf\'\'a\\\'sdf'; preg_match_all('/(?<!\\\\)[\'"]/', \$subStr, \$matches); echo count(\$matches[0]); // => 6 Demo 评论 解决 无用 打赏 分享 举报 查看更多回答(3条) 报告相同问题？ 提交 关注问题 相关推荐 更多相似问题 计算字符串中不带反斜杠的引号数 php 2014-02-28 14:31 回答 4 已采纳 Why doesn't it work You can't use a character class to match a character not preceded by another 如何从JavaScript中删除字符串中的反斜杠 javascriptphp 2014-03-27 13:00 回答 2 已采纳 You've said what you quoted above is a string, but it's unclear whether you mean this (shortened a 从字符串中删除反斜杠 2017-08-01 06:10 回答 2 已采纳 You are sending the content of summary as a string so, instead you need to send it as a slice of m php 字符串进行计算_PHP eval() 函数把字符串按照 PHP 代码来计算 2021-03-22 19:37 weixin_39579127的博客 eval() 函数把字符串按照 PHP 代码来计算。该字符串必须是合法的 PHP 代码，且必须以分号结尾。如果没有在代码字符串中调用 return 语句，则返回 NULL。如果代码中存在解析错误，则 eval() 函数返回 false。语法eval... php json_encode不要反斜杠,【json+encode让URL内容斜杠+不转义】 2021-03-26 14:37 weixin_39529128的博客 json_encode让URL内容斜杠/不转义但想记住二百多个0和1实在是太复杂了，脑钱包概念的关键在于，用哈希算法sha-256对密钥进行校验，让256位二进制数字变成更短的编码，就可以保证让这串字符适合人脑记忆。例如表6.2 ... PHP中字符串的整理函数有,PHP中字符串函数整理（一） 2021-05-02 05:13 黄怡猫的博客 PHP中字符串函数整理(一)字符串的截取、查找、替换(1)string chunk_split(string,length,end) 按照length步长分割字符串并在分割的字符串中间添加end ```\$str = "this is test string!";echo chunk_split(\$str,2,"=... 让字符串中的反斜杠不作为转义符号 python有问必答 2021-06-04 22:28 回答 2 已采纳 可以用字符串替换方法，先把/全部替换成空的字符，应该就能解决你的问题啦。   如何使用单引号回显字符串而不使用反斜杠 mysqlphp 2014-04-10 19:50 回答 1 已采纳 I would use stripslashes() function \$user_data = "I'm awesome"; \$user_data = stripslashes(\$user_d 如何在php中用双引号和斜杠清理json字符串 jsonphp 2017-08-23 11:18 回答 1 已采纳 try this \$result = str_split(\$contacts); for (\$i = 0; \$i < count(\$result); \$i++) php返回第一个字符串的码点_PHP中字符串常用处理函数 2021-03-22 22:28 weixin_39876856的博客 去除首尾特定字符trim(\$str[,\$charlist])：返回字符串 str 去除首尾空白字符或特定字符后的结果。如果不指定第二个参数，trim() 将去除这些字符：" "空格符。 "\t"制表符。 "\n" 换行符。 "\r" 回车符。 "\0" 空字节... php连接数据库 字符串函数,php 字符串函数 2021-04-08 10:07 墨棏感卿的博客 {php 字符串函数}php操作字符串在Web应用中，用户和系统的交互基本上是用文字来进行的，因此系统对文本信息，即字符串的处理非常重要。文本字符串操作内容很多，本节将一一介绍。3.1.1 去除空格和其他特殊符号有时，... php 字符串操作方法,php字符串与字符串操作教程详解 2021-04-17 03:17 心理咨询师林博宇的博客 输出字符串在PHP中,有四种方法输出字符串,echo结构可以一次输出多个值；print()只可以输出一个值；printf()可以格式化输出；print_r()可以输出数组,对调试很有好处,下面一一进行介绍。1.echoecho 是PHP的一个关键字,... 用双引号回复反斜杠的php字符串 php 2015-09-30 07:49 回答 3 已采纳 Try str_replace. \$str = str_replace("\\","",\$str); linux awk命令处理字符串中反斜杠问题 2016-07-27 16:27 回答 4 已采纳 二了，直接awk '{print \$1}' input.txt 就可以 从Laravel中的JSON字符串中删除添加的反斜杠 jsonlaravelphp 2017-11-07 10:04 回答 2 已采纳 Try json_decode(your_data) this should work. php 字符串操作方法,php字符串与字符串操作教程详解_PHP教程 2021-04-17 03:17 喷火战机的博客 输出字符串在PHP中，有四种方法输出字符串。echo结构可以一次输出多个值；print()只可以输出一个值；printf()可以格式化输出；print_r()可以输出数组，对调试很有好处。下面一一进行介绍。1. echoecho 是PHP的一个... php移动字符串,php操作字符串函数 2021-04-23 09:28 weixin_39533174的博客 // addcslashes(str, charlist):函数在指定的字符前加反斜杠// 注释：在对 0，r，n 和 t 应用 addcslashes() 时要小心。// 在 PHP 中，\0，\r，\n 和 \t 是预定义的转义序列。//stripcslashes(string):删除由addcsl.... php字符串处理 2020-11-30 00:02 duoduowangjia的博客 字符串处理 <?php echo substr("1234567",2,4);//将字符串用substr处理，输出345 echo substr(123456,2,4);//同样是345因为php是弱类型语言 \$str="lamp" \$str(strlen(\$str)-1)="nginx";//结果为lamn 双... 阻止PHP将反斜杠添加到字符串[关闭] php 2016-08-16 09:04 回答 1 已采纳 I found out that returning it in json format was adding the backslashes. php的字符串操作,PHP 字符串操作 2021-04-28 10:10 weixin_39988930的博客 关于PHP字符串的操作函数代码如下：//addcslashes() 在字符 “A” 之前添加一个反斜杠\$a = "abcdefg";\$value = addcslashes(\$a,c);echo \$value;echo "我是addcslashes()";echo "\n";//addslashes() 在每个双引号(")... 没有解决我的问题, 去提问```
``` 点击登录 提问题 ◇ 欢迎建议意见◇ 2021年终总结◇ 问答有奖测评征文◇ 通知公告 悬赏问题 ¥150 通过vpn连接的网络，访问webservice地址时报504错误 ¥100 大疆无人机世界坐标系转像素坐标系 ¥100 cocos2d external\lua\cjson ¥100 c# 识别图片上的英文字母，+加号和-减号和0到9的数字 ¥100 搭建PHP网站，连接已有的sqlite数据库，然后执行某一条select命令，查询结果反馈到网页上。 ¥81 Gcorelabs(云服务器厂商) 如何使用自订映像檔 Custom iso ¥55 QQ邮箱记事本的图片打开后成了加密照片，如何解决 ¥50 哈希函数冲突困难性的证明，关于冲突困难性的定义为，对于任意的多项式时间A都满足一下公式 ¥50 vs code 无法使用原始字符串 ¥50 币安智能链pancakeswapk线图能看秒数的吗 ```
``` ```
``` window.csdn.sideToolbar = { options: { afterFinished: function () { setTimeout(function () { var helphtml = '<a class="option-box" data-type="help" href="https://ask.csdn.net/questions/7441224" target="_blank">'+'<img src="https://g.csdnimg.cn/side-toolbar/2.5/images/bangzhucopy.png" alt="" srcset="">'+ '<span class="show-txt">帮助</span></a>'; \$('.csdn-side-toolbar > a:last').before(helphtml); }, 300); }, contentEl: document.getElementsByClassName('floor')[0] } } ```