gpt4 book ai didi

php - 正则表达式和匹配

转载 作者:行者123 更新时间:2023-12-04 13:15:50 25 4
gpt4 key购买 nike

这个问题不太可能对任何 future 的访客有帮助;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于互联网的全局受众。为了帮助使这个问题更广泛地适用, visit the help center




8年前关闭。




这是 PHP 正则表达式示例的示例列表。也许这对某人有所帮助,因为管理员/或其他用户无法明确表示我正在尝试分享我的方法。

preg_match 进行搜索(preg_replace 是一个替代品)。

preg_match 有三个参数 - preg_match(FindWhat, FindWhere, GivingOutput);

示例 1) :

<?php
// Everything expect letters and numbers
$text = 'abc345fg@h';
$newfilename = preg_match('/[^a-zA-Z0-9.]/', $text, $out);
echo $out[0];
?>
Output will be:
@

preg_match 只找到一个结果(第一个找到的结果),有两个选项: [0] 或 1

示例 2) :在我们的搜索条件中查找所有内容(任何字符、单词……):
<?php
$text = 'abcdefghijklmnopqrst';
$newfilename = preg_match('/ij(.*?)mn/', $text, $out);
echo $out[0];
echo $out[1];
?>
[1] -gives only the inner search result (what we had in the brackets, between "ij" and "mn"):
kl

[0] -gives the whole search result:
ijklmn

(请注意,如果您在搜索条件中不使用方括号,则该选项 1 不可用(如我们上面的示例 1 所示)

示例 3) :

如果你的目标文本有很多相同的出现,像这样:
$text = '你好用户 Jimmy Jones ,是我。你好用户 Mery Pawders ,它仍然是我。';

现在,这里有两个不同的匹配项,因此,我们需要使用 preg_match_all
<?php
$text = 'Hello user Jimmy Jones, it\'s me. Hello user Mery Pawders, it\'s me.';
$newfilename = preg_match_all('/hello user (.*?) it\'s/', $text, $out);
foreach ($out[1] as $found_one) {
echo $found_one;
}
// Or use $out[0] for full search match
?>

Output will be:
Jimmy Jones,
Mery Pawders,

示例 4) :在多种可能性中搜索:
<?php
$text = 'member ACCOUNT7';
preg_match("/ACCOUNT[123456789]/", $text, $out);
echo $out[1];
?>

Output will be:
ACCOUNT7

示例 5) :要查找字符串,当输入文本包含新行时,必须在末尾使用 s
<?php
$text = 'one
two
three';
preg_match("/one(.*?)three/s", $text, $out);
echo $out[1];
?>

Output will be:
two

示例 6) :您的搜索始终区分大小写。要进行不区分大小写的搜索,请在最后使用 i (如果需要,可以不使用 s );
<?php
$text = 'ONE TWO TREE';
preg_match("/one(.*?)three/si", $text, $out);
echo $out[1];
?>

示例 7) : 要在 preg_match 中搜索 个特殊字符 (如/".<*'? 等),需要使用这个转义符:\
<?php
$text = 'hello Jimmy/Kroger ';
preg_match("/Jimmy\/Kroger/", $text, $out);
echo $out[0];
?>

现在,我们可以使用 ^ 运算符,它反过来搜索结果。

示例 8) :查找所有内容而不是字母和数字:
<?php
$text = 'abc@*&^)($%';
preg_match_all('/[^a-zA-Z0-9.]/', $text, $out);
foreach ($out[0] as $varr) {
echo $varr;
}
?>
Output will be:
@*&^)($%

对于 搜索 替换 ,我们有一些不同的结构,因为我们需要使用新变量。

示例 9) :使用此运算符查找并替换所有 而不是 字母和数字的所有内容:^
<?php
$text = 'ab2sq)(&*(%$%^$@%n23f9';
$variable = preg_replace('/[^a-zA-Z0-9.]/', 'a', $text);
echo $variable;
?>
Output will be:
ab2sqn23f9

示例 10) :在找到的结果中搜索并添加一些内容:
<?php
$text = 'Hi, it\'s me, Niko from Austria';
$variable = preg_replace('/(Niko.*?) from/', '$1 Gomez', $text);
echo $variable;
?>
Output will be:

it's me, Niko Gomez Austria

示例 11) :查找文本中的所有链接:
<?php
$text = 'hi, my site is http://example.com, and on my page, at http://example.com/page37/blabla.html I wrote something..';
preg_match_all("/[[:alpha:]]+:\/\/[^<>[:space:]]+[[:alnum:]\/]/",$text, $out);
foreach($out[0] as $varr){
echo $varr;
}
?>
Output will be:
http://example.com
http://example.com/page37/blabla.html

示例 12) :与示例 11 类似(但带有替换) - 在文本中查找链接并将它们放在 anchor 定标签中:
<?php
$text = 'Hi, my site is http://example.com, and on my page, at http://example.com/page37/trid.html I wrote something..';
$variable = preg_replace("/[[:alpha:]]+:\/\/[^<>[:space:]]+[[:alnum:]\/]/",'<a href="\\0">\\0</a>', $text);
echo $variable;
?>

输出将是相同的句子,但链接将被 anchor 定。

1) 提示:如果您只想检查一个字符串是否包含在另一个字符串中,请不要使用 preg_match()。改用 stristr() 或 strpos() ,因为它们会更快。

2) **关于PHP正则表达式的更高级、具体的例子,使用谷歌,或者看**
完整选项和手册位于 - http://www.php.net/manual/en/reference.pcre.pattern.syntax.php

(您可以在此处快速查看所有运营商列表 -
http://www.catswhocode.com/blog/15-php-regular-expressions-for-web-developers
http://www.noupe.com/php/php-regular-expressions.html )

3)对于HTML代码,有专门的轻量级PHP软件,叫做DOM Parser。但有时,如果您非常了解 PHP 正则表达式,您可能不需要 DOM 解析器。

最佳答案

试试这个正则表达式:

/^Shop.*0$/i

这个在开始时检查 Shop 并在结束时检查零。

关于php - 正则表达式和匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16166819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com