草庐IT

preg-match-all

全部标签

PHP 正则表达式 : matching a word or sentence inside a html <p> BUT NOT inside <div> <img> <a> tags

我正在尝试匹配和替换html文档中的大约100个单词,为每个单词创建链接。出于性能原因,我认为DOM操作会比preg_replace慢。问题是我希望能够匹配(和替换)简单的单词(或句子)INSIDEtagsBUTNOTinsideanyothertagnor.我正在使用这个正则表达式来匹配单词“sapien”:/(]*>)(.*)(?!]+>[^]+)(?!=\"[\w]*)(\bsapien\b)(?![^]+)(?![^\w]*\")(.*)()/imU这是我应用它的文本:Crascursusconsequatnibhsapienacvehicula.Sederatsapien,c

php - 在 preg_match_all() 中需要一些关于正则表达式的帮助

所以我需要从字符串中提取票号“Ticket#999999”。我该如何使用正则表达式来执行此操作。如果我在Ticket#9999中有多个号码,我当前的正则表达式可以正常工作。但是如果我只有Ticket#9,它就不起作用了,请帮忙。当前正则表达式。preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches);谢谢。 最佳答案 在您的模式中,[0-9]匹配1个数字,\w匹配另一个数字,\d+匹配1+个数字,因此#后需要3位数字。使用preg_match_all('/Ticket#([0-9

PHP preg_match_all 正则表达式从 css 获取像素值( "px")

我正在寻找与PHP的preg_match_all()函数一起使用的正则表达式,它将为我提供CSS文件中的所有px值。例如,如果使用下面的css,那么预期结果将是一个数组:array("11px","0.45px","11.0005px","1.1px","888.888px")$pattern字符串是我目前所拥有的——但是它似乎没有用。我尝试使用的逻辑是:小数点前最多4位,小数点符号可选,小数点后可选,最多4位,后面跟“px”。$pattern="/([0-9]{1,4}\.*[0-9]{1,4}*px)/";$css='.some_class{font-size:11px;margi

php - 如何使用 preg_match_all 从字符串中检索三个参数?

我试图从文本中获取所有出现的代码片段和3个参数。我使用正则表达式和preg_match_allPHP函数来执行此操作。如果我在文本中只出现一次该片段,则效果很好。如果有两个或更多,我会得到一个奇怪的结果。我不是很擅长正则表达式,所以我很难理解我错过了什么。函数publicfunctiongetGallerySnippetOccurrences($text){$ptn='/{#+gallery+(src|width|height)=\[(.*)\]+(src|width|height)=\[(.*)\]+(src|width|height)=\[(.*)\]+#}/';if(preg_m

php - 如何做只匹配特定条件的preg_replace?

我正在努力编写一个preg_replace命令来实现我的需要。基本上我有以下数组(所有项目都遵循这四种模式之一):$array=array('Dogs/Cats','Dogs/Cats/Mice','ANIMALS/SPECIESDogs/Cats/Mice','(Animals/Species)Dogs/Cats/Mice');我需要能够得到以下结果:Dogs/Cats=DogsorCatsDogs/Cats/Mice=DogsorCatsorMiceANIMALS/SPECIESDogs/Cats/Mice=ANIMALS/SPECIESDogsorCatsorMice(Anima

php - 如何使用正则表达式检查字符串是否为正确的数组格式?

我想检查字符串是否是正确的数组结构,例如:"[0,1,2,3,4,5,6,7,8,9]"我想要的正则表达式应该匹配开始[和结束]的方括号,并且在方括号内,它应该只包含数字0-9和逗号,。与上面相同即数字数组,但它是一个字符串。我尝试了以下方法:/\[\d+\]/但它不适用于逗号,。已编辑:我从POST方法接收[0,1,2,3,4,5,6,7,8,9]"作为字符串。 最佳答案 显然根本不是正则表达式,但您最终会得到所需的整数数组,并且没有运行时错误。if(is_array($array=json_decode($string))&&a

php - 如何使用 preg_match() 或其他方式找到确切的数字或单词

在网上找了很多例子都没有成功之后,我来到这里......所以,我正在使用这段代码来找到确切的词:preg_match("/\b".$searched."\b/i",file_get_contents("mytextfile1.txt"))这适用于字母/字符,但是当我将数字用作005、087、172时,IF条件始终返回FALSE...下面是两个示例:工作示例:$searched="someword";if(preg_match("/\b".$searched."\b/i",file_get_contents("mytextfile1.txt"))){//TRUE}非工作示例:$searc

PHP preg_match_all 在长字符串上失败

这是我的代码:$long=str_repeat('averylongstringtext',100);//trychanging100to5000$str=ashortstringtext$longSTR;preg_match_all('@([^]+)@sU',$str,$matched);print_r($matched);它完全按预期工作。但是,在你将100次重复更改为5000次之后,运行print_r($matched);而且您只会得到短字符串出现的结果。我的问题是如何使preg_match或preg_match_all处理大字符串文本(大至1MB或更大)?

php - preg_replace 仅外部标签? (...我们不是在谈论完整的 'html parsing' ,只是一些 Markdown )

突出显示某些文本(不包括OCCASIONAL标签“”中的文本)的最简单方法是什么?澄清:我希望保留现有标签!$t=preg_replace("/(markdown)/","$1","Thisisessentiallyplaintextapartfromafewhtmltagsgeneratedwithsomesimplifiedmarkdownrules:[seehere]");应该显示为:“这基本上是纯文本,除了一些使用一些简化的ma​​rkdown规则生成的html标签:seehere”...但不要弄乱anchor标记内的文本(即)。我听说过不使用正则表达式解析html的争论,但这

php - 使用 preg_replace 替换 php 中所有出现的地方

正则表达式绝对是我的弱点,这个让我完全难住了。我正在构建一个相当基本的搜索功能,我需要能够根据以下模式更改我的用户输入:主题:%22firstset%22%22secondset%22-drupal-wordpress期望的输出:+"firstset"+"secondset"-drupal-wordpress我希望我能提供更多帮助,因为我通常喜欢至少发布目前为止的解决方案,但在这个问题上我不知所措。感谢任何帮助。谢谢。 最佳答案 您的数据似乎是经过URL编码的。如果你申请urldecode,你会得到"firstset""second