【发布时间】:2010-03-21 19:53:14
【问题描述】:
我有一个文本字符串已被修改为网络安全 URL,即非字母数字转换为“_”。
我想做的是在转换之前搜索原始名称,这意味着我需要某种通配符搜索,即
我有什么
test__mytest
带通配符
test??mytest
我会通过通配符搜索找到的字符串
test: mytest
谁能告诉我如何在 PHP 中实现这一点? 谢谢
【问题讨论】:
我有一个文本字符串已被修改为网络安全 URL,即非字母数字转换为“_”。
我想做的是在转换之前搜索原始名称,这意味着我需要某种通配符搜索,即
我有什么
test__mytest
带通配符
test??mytest
我会通过通配符搜索找到的字符串
test: mytest
谁能告诉我如何在 PHP 中实现这一点? 谢谢
【问题讨论】:
可能已经找到解决方案here 如果我让它工作,我会更新。
编辑:这是我的解决方案
$searchstring = "/".str_replace("_","(.?)", escape_string_for_regex($match))."/";
这会将所有 _ 替换为在该位置搜索单个字符。 然后,我使用以下行针对测试字符串测试 $searchstring。
if (preg_match($searchstring, $matchtitle))
【讨论】:
preg_quote($match, '/')。 (除非您在自己的函数中使用它)。
另一种方法是对特殊字符进行编码,而不是将它们转换为下划线。那么你就不需要通配符了,你只需要搜索编码的值。
例如 test%3A%20page
这也可以防止您尝试将以下两个转换为页面时遇到的问题:
测试:页面
测试!页面
它们都会变成 test_page,空间/时间连续体将处于危险之中。可能不太可能,但仍然不受欢迎。
【讨论】: