我被困住了。
我正在尝试查看textarea是否包含#。
这就是我正在尝试的但它不起作用。
示例:
#firstname# - should trigger "processTaggedMessage"
而
firstname - should trigger "processNormalMessage"
代码(PHP):
(preg_match("^#(.*?)#$", $msg))
? $this->processTaggedMessage($fk_uid, $fk_cid, $sender, $msg, $num, $q)
: $this->processNormalMessage($fk_uid, $fk_cid, $sender, $msg, $num, $q);
我确信它是简单的,但我看不到它,我相信正则表达式是正确的:S
谢谢,
凯尔
答案 0 :(得分:1)
如果您要尝试匹配由^
分隔的多个子字符串,请删除$
和#
。
使用:
preg_match('/#.*?#/s', $msg)
答案 1 :(得分:0)
PCRE regular expressions需要delimited。你可以尝试:
preg_match('/^#([^#]*)#$/', $msg)
请注意,^
和$
(根据您的原始模式)指定模式为字符串开头和结尾的anchored。这意味着除非整个字符串为#firstname#
,否则您的模式将不匹配。如果要在字符串中搜索#的,请删除锚点:
preg_match('/#([^#]*)#/', $msg)
此外,如果您想确保哈希值之间存在某些文字,则应使用+
代替*
(/#([^#]+)#/
)。 *
表示“零次或多次重复”,而+
表示“一次或多次重复”。
顺便说一下,由于您在评论中提到您在目标字符串中搜索的内容多次出现,因此您可能希望使用preg_match_all
代替preg_match
你可以收集所有的比赛。
答案 2 :(得分:0)
试
preg_match('/^#(.*?)#$/', $msg)
答案 3 :(得分:0)
试
if (preg_match('/^(.*)#(.*)$/', $msg))
你也可以看一下:
你会发现:
如果您只想检查另一个字符串中是否包含一个字符串,请不要使用preg_match()。使用strpos()或strstr()代替它们会更快。