草庐IT

php - preg_replace 脚本,链接标记不起作用

我使用以下代码从我的字符串中删除脚本、链接标签,$contents='insidetaghfgkdhgjhinside2';$ss=preg_replace('#(.*?)#is','',$contents);echohtmlspecialchars($ss);它工作正常。但是我可以为此使用类似于html解析的任何东西而不是preg_match吗? 最佳答案 这里有几件事你可以做htmlspecialchars()可以证明那些标签没用striptags()移除所有HTML标签但是您使用的技术是正确的。然而,这是一个改进的版本echo

php - preg_split 在 PHP 中有两个定界符

如何合并preg_split中的两个分隔符?例如:$str="thisisatest,andmore";$array=preg_split('/(|,)/',$str,-1,PREG_SPLIT_DELIM_CAPTURE);print_r($array);将生成一个数组作为Array([0]=>this[1]=>[2]=>is[3]=>[4]=>a[5]=>[6]=>test[7]=>[8]=>[9]=>,[10]=>[11]=>[12]=>and[13]=>[14]=>more)但我想得到Array([0]=>this[1]=>[2]=>is[3]=>[4]=>a[5]=>[6]=

php - preg_replace : how to?

如果有一件事我无法理解(或学习),那就是preg_replace句法。我需要帮助删除>之间所有可能的符号(空格、制表符、换行符等)和.意思是,我有这样的XML:BANKME77326417072012我需要它看起来:BANKME77326417072012到目前为止,我想到了这个:$this->data=preg_replace('\>(.*?)但它甚至没有接近我的需要。将不胜感激。 最佳答案 你很接近,你只需要分隔符并限制你对空格字符的搜索:preg_replace('#>\s+其中#是分隔符,\s是任何空格字符的简写。您可以在t

php - 你应该在调用 preg_match 之前初始化 $matches 吗?

preg_match接受一个$matches参数作为引用。我见过的所有示例都不会在它作为参数传递之前对其进行初始化。像这样:preg_match($somePattern,$someSubject,$matches);print_r($matches);这不是很容易出错吗?如果$matches已经包含一个值怎么办?我认为在将它作为arg传递之前应该将其初始化为一个空数组。像这样:$matches=array();preg_match($somePattern,$someSubject,$matches);print_r($matches);我是不是多疑了?

php - 使用 preg_replace 将绝对 url 转换为相对 url

(我搜索了一下,发现了很多关于相对于绝对url转换的问题,但没有关于绝对到相对的问题。)我想从表单字段中获取输入并以相对URL结尾。理想情况下,这将能够处理以下任何输入并以/page-slug结束。http://example.com/page-slughttp://www.example.com/page-slughttps://example.com/page-slughttps://www.example.com/page-slugexample.com/page-slug/page-slug也许还有更多我没有想到的...?编辑:我也希望它适用于相对URL为例如/page/pos

php - is_numeric 还是数字 preg_match?

我在论坛上读到,您不能完全信任is_numeric()。例如,它允许通过“0xFF”,这是一个允许的十六进制...所以我的问题是你能欺骗is_numeric吗?我是否需要使用正则表达式才能正确执行此操作? 最佳答案 这是is_numeric()被认为是一个数字字符串:Numericstringsconsistofoptionalsign,anynumberofdigits,optionaldecimalpartandoptionalexponentialpart.Thus+0123.45e6isavalidnumericvalue.

从拆分切换到 preg_split 时出现 php preg_split 错误

为了与php5.3兼容,从split更改为preg_split后,我​​从php收到此警告:PHPWarning:preg_split():DelimitermustnotbealphanumericorbackslashPHP代码是:$statements=preg_split("\\s*;\\s*",$content);如何修复正则表达式不再使用\谢谢! 最佳答案 这个错误是因为你的正则表达式需要一个分隔符。$statements=preg_split("/\s*;\s*/",$content);

php preg_match 日期格式 "yyyy-MM"

我正在尝试使用来自preg_match:checkbirthdayformat(dd/mm/yyyy)的修改后的preg格式匹配信用卡到期日期(yyyy-MM格式)if(!preg_match('/([0-9]{4})\-([0-9]{2})/',$expirationDate,$matches)){thrownewServices_Payment_Exception('Cardexpirationdateisinvalid');}出于某种原因,它还会验证无效值,例如20111-02(无效年份)。我在这里做错了什么?我想确认年份是4位,月份是2位(01,02..12)

php - 使用 preg_match 在字符串中查找短语

我正在逐行搜索文本,想查看该行是否包含短语“查看详细信息”并且不区分大小写,因此会发现:查看详细信息,查看详细信息,查看详细信息等到目前为止我有这个。if(preg_match("/^(\seedetails)/",strtolower($line))){echo'SEEDETAILSFOUND';}一个简单的例子会很有帮助,谢谢。 最佳答案 如果要检查字符串中是否存在子字符串,则不需要正则表达式:stripos()会做的很好:if(stripos(strtolower($line),'seedetails')!==false){/

php - preg_match 在输入缎化中是否安全?

我正在构建一个新的网络应用程序,LAMP环境...我想知道是否可以信任preg_match用于所有基于文本的字段(也不是HTML字段)的用户输入验证(当然是+准备好的stmt;电话、姓名、姓氏等)。例如,对于经典的“电子邮件字段”,如果我检查如下输入:$email_pattern="/^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)"."|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}"."|[0-9]{1,3})(\]?)$/";$email=$_POST['email'];if(p