给我以下变量:%4 $ s ,该变量在代码中输出文本“ 测试”。
我正在尝试echo strlen('%4$s');
,但它总是返回 4 ,而将其添加为echo strlen("%4$s");
并不会再返回实际值(2),我认为这意味着出于某种原因,它使用变量的编号。
我的主要工作范围是检查%4 $ s 是否包含两个或多个单词,或者计算返回字符串的字符。 目前,%4 $ s ,在我的HTML中返回“ 测试”,因此,我希望得到%4 $ s 的回显返回PHP中的“ 测试”和%4 $ s 的 strlen 返回数字 6 >
答案 0 :(得分:1)
您似乎正在使用适用于printf()
或sprintf()
之类的字符串格式,并且想知道第4个输入值的长度。
示例代码:
$format = '%4$s';
$val1 = 'one';
$val2 = 'two';
$val3 = 'three';
$val4 = 'a test';
echo sprintf($format,$val1,$val2,$val3,$val4);
将显示:
a test
您想知道第4个值的长度。您应该执行strlen('%4$s')
而不是strlen($val4)
,例如:
echo strlen($val4);
哪个会显示:
6
一个完整的例子是:
$format = '%5$d is the strlen of "%4$s"';
$val1 = 'one';
$val2 = 'two';
$val3 = 'three';
$val4 = 'a test';
echo sprintf($format,$val1,$val2,$val3,$val4,strlen($val4));
将显示:
6是“测试”的全部内容
编辑:即使在查看您发布的pastebin链接后,您仍然不清楚自己在做什么。也就是说,以下是可行的猜测。它使用vsprintf()
方法:
$format = '%6$s is the strlen of "%4$s"';
$retArr[0] = array('post_id' => 'one',
'icon' => 'two',
'title' => 'three',
'permalink' => 'a test',
'image' => '/path/to/img.png');
$retArr[0]['len'] = strlen($retArr[0]['permalink']);
echo vsprintf($format,$retArr[0]);
并且仍然输出:
6是“测试”的全部内容
答案 1 :(得分:0)
引荐:http://php.net/manual/en/language.types.string.php
注意:与双引号和heredoc语法不同,特殊字符的变量和转义序列在单引号引起来的字符串中不会扩展。
Double quoted ¶
If the string is enclosed in double-quotes ("), PHP will interpret the following escape sequences for special characters:
$
是php中的转义字符,如果您使用"\"
之类的"\$s"
如"s"
无法正确转义,它将被视为变量"$s"
。
因此,您的计数为2
答案 2 :(得分:0)
strlen返回字符串中字母的数量,因此这就是为什么要获取数字4而不是字符串的原因。
尝试:'%4'.$s
答案 3 :(得分:0)
这是一个答案,它将计算字符串长度(按char)并计算字数。
注意:这不是复制粘贴解决方案,因此您将需要更改代码以适应要求。
通过执行通用规则(单词之间用空格分隔),可以轻松获得单词计数。这是一个名为explode()的PHP函数的引入。我们可以将其与count()结合使用以获取字数:
$foo = 'a test';
$wordCount = count(explode(' ', $foo));
$strLength = strlen($foo);
echo $wordCount; # will output 2
echo $strLength; # will output 6
我已经看到了用于数组数据的pastebin,您可以遍历数组以获取单个值,或者使用$array[$key]
指定要定位的特定值。