【问题标题】:Finding the index of " in a string在字符串中查找 " 的索引
【发布时间】:2023-12-16 06:16:01
【问题描述】:

我一直有一个(希望是愚蠢的)问题,我想知道是否有人可以提供帮助。

我正在尝试确定一个字符串是否以" 开头,即:

"-------- Original Message

我什么都试过了——strpos($str, '"') === 0strpos(html_entity_decode($str), '"') === 0,但无论如何,我总是发现strpos(***, '"')是假的——不是0。

这里有更多上下文(从网络表单解析 csv 行,试图找到引用消息的开始位置),但我空手而归。

我正在使用 php 7。来自 JS/TS 背景,所以其中一些细微差别可能只是我的头脑。

有人对可能发生的事情有任何直觉吗?如果需要,我可以提供代码/更多上下文。昨晚试着盯着这个看几个小时,但没有骰子。

【问题讨论】:

  • 也许可以试试:strpos($str, '"') === 0 ?
  • 刚刚试了一下。它可以在沙盒中运行,但不能在我的服务器上运行,这让我很奇怪。
  • 也可以试试:mb_strpos($str, '"') === 0 看看有没有什么不同?
  • 嗯。适用于原始字符串('"-------- Original Message')。这可能只是我如何迭代 csv/解析行的行而不是字符问题的其他问题。 :( 我可能只是过度关注引号。

标签: php quotes strpos


【解决方案1】:

也许这可以帮助...函数 htmlspecialchars_decode 转换 "加引号

<?php
$str = "&quot;--------";
echo "Position is: ";
echo strpos(htmlspecialchars_decode($str), '"'); 
echo "\n";
echo "Is quotation mark at the beginning?";
echo strpos(htmlspecialchars_decode($str), '"')==0; 
echo "\n"; 
?>

输出:

Position is: 0
Is quotation mark at the beginning? 1

【讨论】:

  • 伙计,我缺乏 php 知识正在发光!在我的代码中使用这个更高层设法解决了所有问题。上面的输入来自一个 POST 请求,所以一定是发生了一些古怪的事情。