PHP-使用substr()检查字符串的一部分,然后使用条件-行为奇怪
首先,由于某些原因(例如字符串可以有多种类型),我不能在我的一个项目中使用PHP-使用substr()检查字符串的一部分,然后使用条件-行为奇怪,php,string,substring,Php,String,Substring,首先,由于某些原因(例如字符串可以有多种类型),我不能在我的一个项目中使用explode()函数。我得到的字符串是:“##%off”。所以为了检查它是否是这种类型的字符串,我想检查它是否包含单词“off”。我试图使用子字符串来获取字符串的尾部,然后我感到惭愧,它总是给我答案“不” 我正在测试这个: <?php echo $string1 = '05% off'. '<br/>'; echo $string2 = '03% Off'. '<br/>'; echo $s
explode()
函数。我得到的字符串是:“##%off”。所以为了检查它是否是这种类型的字符串,我想检查它是否包含单词“off”。我试图使用子字符串来获取字符串的尾部,然后我感到惭愧,它总是给我答案“不”
我正在测试这个:
<?php
echo $string1 = '05% off'. '<br/>';
echo $string2 = '03% Off'. '<br/>';
echo $string3 = '50% OFF'. '<br/>';
echo $string4 = '50% oFf'. '<br/>';
echo '<hr/>';
echo $firstsub = substr( $string1, 4 );
echo $secondsub = substr( $string2, 4 );
echo $threesub = substr( $string3, 4 );
echo $foursub = substr( $string3, 4 );
echo '<br/>';
echo substr( $string1, 0, 2 ) . '<br/>';
echo substr( $string2, 0, 2 ) . '<br/>';
echo substr( $string3, 0, 2 ) . '<br/>';
echo substr( $string4, 0, 2 ) . '<br/>';
echo '<hr/>';
echo '<h2>TESTING</h2>';
if( strtolower( $firstsub ) == 'off' ) { echo "Yes" . '<br/>'; } else { echo "No" . '<br/>'; }
if( strtolower( $secondsub ) == 'off' ) { echo "Yes" . '<br/>'; } else { echo "No" . '<br/>'; }
if( strtolower( $threesub ) == 'off' ) { echo "Yes" . '<br/>'; } else { echo "No" . '<br/>'; }
if( strtolower( $foursub ) == 'off' ) { echo "Yes" . '<br/>'; } else { echo "No" . '<br/>'; }
?>
我不明白为什么会发生这种情况?因为
$string1
=05%的折扣
所以当你做substr()时,
等于off
不仅仅是off
如果执行var\u dump()
不需要这样的substr()
。因为$string1
=05%的折扣
所以当你做substr()
$firstsub
时等于off
而不仅仅是off
如果执行var\u dump()
这样就不需要substr()
。通过substr,您可以得到类似“off
”
的东西,而不是您需要的东西,因为:
$string1 = '05% off'. '<br/>'
通过substr,您将获得类似于“off
“
的东西,而不是您需要的东西,因为:
$string1 = '05% off'. '<br/>'
像这样添加
echo $string1 = '05% off';
echo $firstsub = substr( $string1, 4 );
$string1.='<br/>';
echo$string1='05%折扣';
echo$firstsub=substr($string1,4);
$string1.='
';
对我来说,trim()
不起作用像这样添加
echo $string1 = '05% off';
echo $firstsub = substr( $string1, 4 );
$string1.='<br/>';
echo$string1='05%折扣';
echo$firstsub=substr($string1,4);
$string1.='
';
对我来说,trim()
不起作用了@AmalMurali想解释一下为什么你认为它不正确吗?啊,你是对的。我的测试脚本中有错误的字符集。如果您编辑答案,我可以删除我的否决票。:)这里的问题是@AmalMurali认为php中的“
”被解释为php代码中的空白。我完全同意你的看法,问题是字符串后面加了“
”。@Ozmah:的确,这是我的错误。向上投票这个答案来补偿!;-)不过,我认为这里可能需要一个正则表达式。您可以删除所有的substr()
调用,只使用一个if(preg\u match(…)
并完成它。@AmalMurali想解释一下为什么您认为它不正确吗?啊,您是对的。我的测试脚本中有错误的字符集。如果您编辑答案,我可以删除我的否决票。:)这里的问题是@AmalMurali认为php中的“
”被解释为php代码中的空白。我完全同意你的看法,问题是字符串后面加了“
”。@Ozmah:的确,这是我的错误。向上投票这个答案来补偿!;-)不过,我认为这里可能需要一个正则表达式。您可以删除所有substr()
调用,只使用一个if(preg_match(…)
并完成它。为什么不简单地使用正则表达式?为什么不简单地使用正则表达式?
$firstsub = substr( $string1, 4, 3 );
echo $string1 = '05% off';
echo $firstsub = substr( $string1, 4 );
$string1.='<br/>';