12

以下是 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 = 'Hello user Jimmy Jones , it\'s me. 你好用户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:
@*&^)($%

对于searchreplace,我们有一点不同的结构,因为我们需要使用新变量。

示例 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 类似(但带有替换) - 在文本中查找链接并将它们放在锚定标签中:

<?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;
?>

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

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

2) **有关 PHP 正则表达式的更高级、具体的示例,请使用 Google,或查看 ** 完整选项和手册- h​​ttp: //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 -表达式.html
)

3) 对于 HTML 代码,有一种特殊的轻量级 PHP 软件,叫做-DOM Parser。但有时,如果您熟悉 PHP 正则表达式,您可能不需要 DOM 解析器。

4

2 回答 2

2

试试这个正则表达式:

/^Shop.*0$/i

这一个在开始时检查商店,在最后检查零。

于 2013-04-23T10:19:26.420 回答
1

我假设,当你说“$email”时,你的意思是@标志之前的东西。在这种情况下,您可以使用此正则表达式:

$email = 'SHOP_psgarden_0@somewhere.com';
if (preg_match('/^shop.*0@/i', $email) === 1) {
    echo 'Yes!';
}

您还可以使用正常的程序代码进行检查:

$email   = 'SHOP_psgarden_0@somewhere.com';
$local   = substr($email, 0, strpos($email, '@'));
$amalgam = substr($local, 0, 4) . substr($local, -1);
if (strcasecmp('shop0', $amalgam) === 0) {
    echo "yes";
} else {
    echo "no";
}
于 2013-04-23T10:27:26.087 回答