我有一个脚本从字符串中抓取所有哈希标记,然后将它们存储在一个数组中,接下来发生的事情取决于字符串中是否有任何哈希标记。如果正在测试的字符串中确实存在哈希标记,如何创建if语句以仅运行代码。
以下是我的尝试:
<?php
$string= "Went for an awesome bike";
echo $string . "</br></br>";
preg_match_all('/#(\w+)/',$string, $matches);
if ($matches != 0) {
foreach ($matches[1] as $tag) {
echo $tag . "</br></br>";
}
}
else {
echo "There are no tags here!!";
}
?>
我无法回应失败的消息?我能做错什么?
谢谢!
答案 0 :(得分:1)
preg_match_all()
将返回发生了多少匹配(包括0),或者失败时返回布尔值假,所以只是一个简单的:
$cnt = preg_match_all(...);
if (($cnt !== FALSE) && ($cnt > 0)) {
... found something ...
}
会做的。请注意!==
。这是区分真正的布尔false
和简单整数0
所必需的,当使用标准的非严格==
逻辑时,两者都测试相同。
答案 1 :(得分:1)
最简单的检查方法是更改行
if ($matches != 0) {
进入
if ($matches[1]) {
检查字符串是否匹配(因为如果数组为空,它将为false)
如果您要进行验证,可以var_dump($matches);
查看preg_match_all()
返回的内容
要获得奖金,您可以在testing site i use
上查看您的正则表达式答案 2 :(得分:0)
匹配是一个数组。
if ( count( $matches[1]) != 0)
答案 3 :(得分:0)
var_dump(array() == 0);
=&GT;
布尔(假)
检查:
if (!empty($matches[0]))
因为数组$matches
总是至少填充一个项目;但是这个数组的条目并不总是。