我需要一个像preg_replace一样的函数,但我需要它来处理文件/文件内容而不是字符串.
我正在通过正则表达式在字符串中搜索关键字.它适用于所有关键字,并在其中包含一个正斜杠:"time/emit".
即使使用preg_quote($find,'/'),逃脱它,我仍然得到消息:
Unknown modifier 't' in /frontend.functions.php on line 71
Run Code Online (Sandbox Code Playgroud)
如果我打印查找模式,它会显示/time\\/emit/.如果没有preg_quote,它会显示/time/emit/ 并返回相同的错误消息.
任何一点知识都会有用.
我已经有了一些工作代码,但我需要有人帮助解释为什么它可以工作!
我使用PHP来替换字符串中的任何内容,如果它不是az,AZ,0-9,逗号,分号,下划线或连字符(最终应该代表单个用户名,或者逗号/分号分隔)用户名列表).
以下作品:
$data = preg_replace('/[^,;a-zA-Z0-9_-]/s', '', $data);
Run Code Online (Sandbox Code Playgroud)
但以下不是:
$data = preg_replace('/[^a-zA-Z0-9_-,;]/s', '', $data);
Run Code Online (Sandbox Code Playgroud)
为什么只有在逗号和分号开头时这才有效?将它们放在最后似乎会破坏事物(这是我在遇到/ [^ a-zA-Z0-9 _-]/s时最初尝试过的事情.
顺便说一句,我也使用以下内容修剪任何尾随的分号(复数)或逗号(复数),有人可能会建议一个更有效和/或更优雅的方式来做到这一点?:
if(preg_match('/;$/', $data))
{
$data = rtrim($data, ';' );
}
if(preg_match('/,$/', $data))
{
$data = rtrim($data, ',' );
}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助 :)
我最近将PHP从5.3.27升级到5.5.0.在我的Symfony 2.3.2项目中一切正常,我可以享受最新的PHP功能.
现在当我回到我的其他Symfony 1.4.16项目时,我得到一个关于preg_replace被/ e修饰符弃用的PHP错误.
我在论坛中找不到关于此错误的参考:以前是否有人遇到此问题?有什么样的补丁我可以开箱即用吗?升级到Symfony 1.4.20会解决这个问题吗?
错误消息如下所示:
不推荐使用:preg_replace():不推荐使用/ e修饰符,而是在第409行的/myproject/lib/vendor/symfony/lib/response/sfWebResponse.class.php中使用preg_replace_callback
一种方法可能是按照消息和手册中的建议修改代码.如何将preg_replace表达式更改为preg_replace_callback调用?
任何帮助/提示都将非常受欢迎.
编辑:
到目前为止,还没有补丁(Symfony 1.4.20没有解决这个问题).解决方案是将对preg_replace的失败调用替换为在sourche中对preg_replace_callback的相应调用,这很容易在sfWebResponse类中完成(感谢提示Jon).不幸的是,现在下一次失败的情况稍微复杂一些......另一方面,我们可能不得不使用/ e选项grep for preg_replace使用以找出Symfony可能会破坏的位置.这给出了不少结果:o
所以...我的结论是Symfony 1.4用户最好不要将PHP升级到5.5版,直到出现一些严重的补丁.你怎么看 ?还有其他选择
如何检查字符串是否在PHP中有字母表
的而ctype_alpha和 ctype_digit不会在它的帮助.他们的任何方法?
我有一个MySQL数据库,我从中提取一个字符串,这是一个由换行符分隔的单词列表.现在我想只删除尾随换行符.我尝试使用preg_replace作为
$string = preg_replace('/\n/','',$string);
Run Code Online (Sandbox Code Playgroud)
它工作但字符串中的所有换行都被删除:(请帮忙
感谢大家.
我一直在寻找PHP preg_replace函数的js等价物,到目前为止我发现的很简单string.replace.
但是我不确定如何将我的正则表达式转换为JavaScript.这是我的PHP代码:
preg_replace("/( )*/", $str, $str);
Run Code Online (Sandbox Code Playgroud)
例如,以下内容:
test test test test
Run Code Online (Sandbox Code Playgroud)
变为:
test-test-test-test
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何在JavaScript中执行此操作?
我似乎把自己与preg_match正则表达式混淆了,我正在做,所以新鲜的眼睛和帮助将不胜感激.
我目前的正则表达式如下:
/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)
我想要输入数字和冒号,例如:(1,4)可选,所以它匹配:
<!--menu:start--><!--menu:end-->
Run Code Online (Sandbox Code Playgroud)
要么
<!--menu:start:(0,3)--><!--menu:end-->
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个函数,将给定字符串中每个出现的纯文本电子邮件地址转换为它的html化版本.
假设我有以下代码,htmlizeEmails我正在寻找的功能在哪里:
$str = "Send me an email to bob@example.com.";
echo htmlizeEmails($str); // Echoes "Send me an email to <a href="mailto:bob@example.com">bob@example.com</a>."
Run Code Online (Sandbox Code Playgroud)
如果可能,我希望此功能使用该filter_var功能来检查电子邮件是否有效.
有谁知道如何做到这一点?谢谢!
感谢您的答案,我用令人震惊的正则表达式匹配潜在的电子邮件地址,然后,只有当filter_var验证它,它就会被取代.
function htmlizeEmails($text)
preg_match_all('/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/', $text, $potentialEmails, PREG_SET_ORDER);
$potentialEmailsCount = count($potentialEmails);
for ($i = 0; $i < $potentialEmailsCount; $i++) {
if (filter_var($potentialEmails[$i][0], FILTER_VALIDATE_EMAIL)) {
$text = str_replace($potentialEmails[$i][0], '<a href="mailto:' . $potentialEmails[$i][0] .'">' . $potentialEmails[$i][0] .'</a>', $text);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在建立瑞典语网站,瑞典语字母是å,ä和ö.
我需要创建一个由用户输入的字符串,以使用PHP成为url-safe.
基本上,需要将所有字符转换为下划线,所有这些除外:
A-Z, a-z, 1-9
Run Code Online (Sandbox Code Playgroud)
所有瑞典人应该像这样转换:
'å'到'a'和'ä'到'a'和'ö'到'o'(只需删除上面的点).
正如我所说,其余的应该成为下划线.
我不擅长正则表达式,所以我很感激帮助人!
谢谢
注意:不是URLENCODE ...我需要将它存储在数据库等等,urlencode不适合我.
php ×10
preg-replace ×10
regex ×8
preg-match ×3
diacritics ×1
email ×1
file ×1
file-io ×1
javascript ×1
mysql ×1
replace ×1
string ×1
symfony-1.4 ×1