草庐IT

preg_replace_all

全部标签

php - <li> 元素的 preg_match_all

我正在尝试返回列表的计数。该列表如下所示:1234我只是不知道如何计算li标签的数量。我不在乎内容,只在乎数量。这是我的:preg_match_all('!.*?.*?.*?!',$content,$matches);丑陋的我知道,当我count($matches[0]);时我只收到一个匹配项谁能指出我做错了什么和/或为什么?谢谢编辑:我知道用正则表达式解析HTML是bad,但我现在在这件事上别无选择。 最佳答案 .*?.*?.*?^^^我要指出的部分是消耗所有字符直到(甚至是部分)。消耗它们后,没有更多的匹配,它到此结束,只给出一

php - 为什么带有 PCRE_UTF8 的 PHP preg_match_all 在 CLI 上和通过 Apache/mod_php 给出不同的结果?

以下代码在通过CLI和Apache/mod_php运行时产生不同的结果:$pattern."u",//Addu(PCRE_UTF8)modifier"Non-unicode"=>$pattern);echo"Text:\n'$text'\n";foreach($regexpsas$type=>$regexp){$matches=array();$total=preg_match_all($regexp,$text,$matches);echo"\n\n";echo"$typeregex:\n'$regexp'\n\n";echo"Total$typematches:";var_dump

php - 解释这个 PHP 正则表达式的含义 (preg_match_all)

这个问题在这里已经有了答案:Reference-Whatdoesthisregexmean?(1个回答)关闭7年前。模式在PHP中是什么意思:'#^/abc/(?P[^/]++)$#si';//pleaseexpandthispattern'smeaning.什么是字符串可以匹配此模式与preg_match_all?

PHP : Search all record from array with specific value

我有2个数组。$a=(array('number'=>$value,'name'=>$name),array('number'=>$value,'name'=>$name),array('number'=>$value,'name'=>$name),);$b=(array('number'=>$value,'address'=>$address),array('number'=>$value,'address'=>$address),array('number'=>$value,'address'=>$address),...);现在,假设$a中的“number”=10的特定记录。在P

php - E_ALL ^ E_NOTICE 和 E_ALL & ~E_NOTICE 之间的区别

E_ALL^E_NOTICE和E_ALL&~E_NOTICE有什么区别?据我了解,它们都排除了E_NOTICE级别的错误报告。但是在PHP.ini中使用了&~形式,而我在很多地方都看到提到了^形式。 最佳答案 ^和&~是有区别的,但在本例中没有区别。^表示异或,因此在左操作数或右操作数中设置但不是两者都设置在结果中的位。&~表示与非,因此在左操作数中设置但不在右操作数中的位将在结果中设置。如果我们查看以下数字,就会有所不同:$a=0b1010;//decimal10$b=0b0001;//decimal1$a^$b结果为0b1011

Php str_replace 不适用于特殊字符

为什么这没有按预期工作:echostr_replace("é","é","FédérationCamerounaisedeFootball");结果:"FédérationCamerounaisedeFootball"我希望有:"FédérationCamerounaisedeFootball" 最佳答案 你做错了。这个字符串没有错误,需要替换,它只是用UTF-8编码。您所要做的就是utf8_decode('FédérationCamerounaisedeFootball')。更新:您看到FédérationCamerou

php - PHP 中 "filter_var"和 "preg_replace"之间的后端区别是什么?

我有来自数据库(非常受控的输入)的数字,它们前后都有下划线。它们是这样存储的:_51__356_它们不会以任何其他格式存储,但有时我只需要从中获取数字。我选择使用其中之一$x=filter_var($myNumber,FILTER_SANITIZE_NUMBER_INT);或$y=preg_replace("/[^0-9]/","",$myNumber);我不确定后端两者之间的细微差别,但它们都能产生我所需要的(无论如何,我是这么认为的),所以我使用哪个并不重要。使用这些选项的优缺点是什么?(例如,是否有人使用数组或其他我可能需要了解的奇怪事物?有人使用了太多资源吗?)

PHP 强制 str_replace 只替换一个结果

这个问题在这里已经有了答案:Usingstr_replacesothatitonlyactsonthefirstmatch?(23个回答)关闭7年前。这是完美的工作:$replaceLyrics=str_replace('story','_____','ThestoryofmylifeItakeherhomeIdriveallnighttokeepherwarmandtimeIsfrozen(thestoryof,thestoryof)');echo$replaceLyrics;输出:The_____ofmylifeItakeherhomeIdriveallnighttokeepher

php preg_split 没有松散的文本,。 : and so forth

我尝试使用preg_split拆分文本,但我没有得到它的正则表达式。例子:Isearch1,regexto:no.Or...yes!应该得到:Array([0]=>I[1]=>search[2]=>1[3]=>,[4]=>regex[5]=>to[6]=>:[7]=>no[8]=>.[9]=>Or[10]=>...[11]=>yes[12]=>!)我尝试了以下代码:preg_split("/([\s]+)/","Isearch1,regexto:no.Or...yes!")结束于:Array([0]=>I[1]=>search[2]=>1,[3]=>regex[4]=>to:[5]=>

php - preg_match 与数字 PHP

当我使用它时:preg_match('/^[0-9]{1,10}(\.[0-9]{1,9})?$/',0.0001);返回值为1,当我使用它时:preg_match('/^[0-9]{1,10}(\.[0-9]{1,9})?$/',0.00001);返回值为0。有人可以告诉我为什么吗?谢谢! 最佳答案 因为小float通常使用指数表示法显示,所以0.00001被转换为1.0E-5,这与正则表达式不匹配。如果你只是这样做,你可以看到这个:echo0.00001;正则表达式应该与字符串一起使用,而不是数字。preg_match('/^[