草庐IT

php - preg_replace 没有按预期工作

我写了一个简单的函数,它接受一段文本,从中提取url,然后用替换所有url。标记他们。例如http://site.com应该变成http://site.com代码:functionparseUrls($string){$string=trim($string);$pattern='%\bhttp[s]?://[A-z0-9/\.\-_]+%i';$replacement='$1';$string=preg_replace($pattern,$replacement,$string);return$string;}但是,如果我将以下字符串作为输入传递:你好https://google.c

php - 用 Preg_replace 删除汉字?

我正在尝试从字符串中删除中文字符。试过了,但无法正常工作。它说:Warning:preg_replace()[function.preg-replace]:Compilationfailed:charactervaluein\x{...}sequenceistoolargeatoffset9inpreg_replace('/[^\x{4e00}-\x{9fa5}]+/','',$string)我怎样才能让它工作? 最佳答案 InUTF-8mode,"\x{...}"isallowed,wherethecontentsofthebra

php preg_replace 特定 html 注释标签之间的所有内容

我检查了其他答案,但似乎无法执行以下操作。请帮助某人:)我想删除中间的所有内容,包括特定的html注释HTML:SomeHTMLthatmuststaysomehtmlthatmustgoSomemoreHTMLthat'sgottastaythisalsoneedstogo因此之间的所有内容和并且评论本身需要去我的preg_replace模式(这显然是错误的):"/.*?/"结果应该是SomeHTMLthatmuststaySomemoreHTMLthat'sgottastay感谢您提前检查和回答:) 最佳答案 感谢@mlwaco

php - 为什么要同时使用 str_replace() 和 preg_replace()?

我是在Perl之后才开始了解PHP的,所以当我第一次发现preg_*函数时,我基本上只是使用它们。后来我读到str_replace()在处理文字文本时速度更快。所以我的问题是,当搜索模式不使用特殊字符时,preg_replace()不能像str_replace()一样高效吗?也许只是分析模式以在正则表达式和纯文本算法之间做出选择? 最佳答案 理论上是的,你是对的。PHP团队可能会调整preg_replace来分析传入的模式,然后在没有看到任何元字符的情况下使用str_replace的代码。假设分析不是太繁重,这可能会产生更好的性能结

php - 如何替换以 "[id"开头、中间部分未知并以 "]"结尾的字符串?

我想在$text中替换以“[id”开头、中间部分未知、以“]”结尾的字符串。我知道如何替换以“[id”开头并以“]”结尾的字符串,但我不知道如何将未知的中间正文部分作为替换规则。任何想法如何像这样替换?谢谢。 最佳答案 以下将删除所有出现的[idsomething]。something将匹配除]之外的所有字符。$newText=preg_replace('#\[id[^\]]+\]#','',$subject);如果你知道something总是一个数字,你可以使用这样的东西:$newText=preg_replace('#\[id\

php - str_replace ('<' ) 可以保护我们免受用户注入(inject)代码的侵害吗?

好的,我有一些用户输入,我做了一个echostr_replace('我想知道,无论如何用户是否可以破坏此过滤器?最初我认为这个脚本非常安全,但在阅读了一些关于php、字符集和安全性的文章后我开始怀疑它的健壮性。 最佳答案 这取决于输入的最终位置。例如,如果在某个时候你最终得到了一个像这样构造的(糟糕的)模板......">alink然后有人可以通过简单地使用以下输入来注入(inject)代码:javascript:do_whatever()即使输出通常不会回显到href字段中,像这样..."href="http://www.goog

php - 为什么\\。平等的\。在preg_replace?

在top-votedanswer至thisfantasticquestion,以下正则表达式用于preg_replace调用(来自答案的auto_version函数):'{\\.([^./]+)$}'这个正则表达式的最终目标是从给定的文件名中提取文件的扩展名。但是,我对为什么这个正则表达式的开头起作用感到困惑。即:为什么\\.匹配方式与\.相同在正则表达式中?前者不应该匹配(a)一个文字反斜杠,后跟(b)任何字符,而第二个匹配一个文字句点吗?singlequotedstrings的规则说明\\产生文字反斜杠。考虑这个简单的例子:$regex1='{\.([^./]+)$}';//Var

PHP - 为所有支持的语言替换所有非字母数字字符

您好,我实际上正在尝试从这样的字符串中替换所有非字母数字字符:mb_ereg_replace('/[^a-z0-9\s]+/i','-',$string);第一个问题是它不会从字符串中替换像"."这样的字符。其次,我想为该方法添加对所有用户语言的多字节支持。我该怎么做?任何帮助appriciated,非常感谢。 最佳答案 尝试以下操作:preg_replace('/[^\p{L}0-9\s]+/u','-',$string);当u标志用于正则表达式时,\p{L}(和\p{Letter})匹配任何任何Unicode字母类别中的字符。

php - 如何用 HTML 标签包含每个单词的首字母?

如何用HTML标签包含每个单词的第一个字母?例如:$string=replace_first_word("somesimpletext",'{L}');echo$string;//returns:somesimpletext编辑:ohhh,忘了提一个重要的点,它需要使用UTF-8Unicode...因为我计划同时支持俄语和英语。 最佳答案 试试这个:$string=preg_replace('/(?:^|\b)(\p{L})(\p{L}*)/u','$1$2','somesimplewords');或者如果你想在一个函数中:func

PHP,从数组读取时str_replace出现问题

我是php的新手,我正在尝试编写一个脚本来读取CSV文件(file1.csv)并将文件中的单词与html文件(file2.html)中的单词进行比较,如果file2中有单词.html与file1.csv中的关键部分匹配它应该使用匹配的关键值更改file2.html内容..到目前为止我所做的是:$glossArray=array();$file_handle=fopen("file1.csv","r");while(!feof($file_handle)){$line_of_text=fgetcsv($file_handle,10000,';');$glossArray[$line_of