[zz]PHP 通常

WBOY
WBOYオリジナル
2016-06-23 14:33:36984ブラウズ

PHP代码
$str = preg_replace("/()(.*?)(<\/a>)/", '\1\2\3', $str);
其中用了三个子模式(每个圆括号中内容为一个子模式),第一个是链接开始标签,第二个是链接文本,第三个是

然后第二个参数中\1、\2、\3就表示这三个部分,要替换成什么样子还不简单?

获取页面中的所有链接地址的PHP函数

下面这个用PHP写的函数,可以获取任意的字符串$string中的所有链接地址($string可以是从一个HTML页面文件直接读取出来的字符串),结果保存在一个数组中返回.该函数自动把电子邮件地址排除在外,而且返回的数组中不会有重复元素.

复制代码 代码如下:


function GetAllLink($string)
{
$string = str_replace("\r","",$string);
$string = str_replace("\n","",$string);

$regex[url] = "((http|https|ftp|telnet|news):\/\/)?([a-z0-9_\-\/\.]+\.[][a-z0-9:;&#@=_~%\?\/\.\,\+\-]+)";
$regex[email] = "([a-z0-9_\-]+)@([a-z0-9_\-]+\.[a-z0-9\-\._\-]+)";

//去掉标签之间的文字
$string = eregi_replace(">[^<>]+<","><", $string);

//去掉JAVASCRIPT代码
$string = eregi_replace("","", $string);

//去掉非的HTML标签
$string = eregi_replace("<[^a][^<>]*>","", $string);

//去掉EMAIL链接
$string = eregi_replace("]*>","", $string);

//替换需要的网页链接
$string = eregi_replace("]*>","\\3\t", $string);

$output[0] = strtok($string, "\t");
while(($temp = strtok("\t")))
{
if($temp && !in_array($temp, $output))
$output[++$i] = $temp;
}

return $output;
}



以下是以PHP的语法所写的示例
验证字符串是否只含数字与英文,字符串长度并在4~16个字符之间

复制代码 代码如下:


$str = 'a1234';
if (preg_match("^[a-zA-Z0-9]{4,16}$", $str)) {
echo "验证成功";} else {
echo "验证失?";}?>


简易的台湾身分证字号验证

复制代码 代码如下:


$str = 'a1234';
if (preg_match("^(?:\d{15}|\d{18})$", $str)) {
echo "验证成功";
} else {
echo "验证失?";}
?>



下面的代码实现文字中的代码块,功能就如你在脚本之家看到的代码一样。

复制代码 代码如下:


function codedisp($code) {
global $discuzcodes;
$discuzcodes['pcodecount']++;
$code = htmlspecialchars(str_replace('\\"', '"', preg_replace("/^[\n\r]*(.+?)[\n\r]*$/is", "\\1", $code)));
$discuzcodes['codehtml'][$discuzcodes['pcodecount']] = "


";
$discuzcodes['codecount']++;
return "[tDISCUZ_CODE_$discuzcodes[pcodecount]t]";
}
$message = preg_replace("/s*[code](.+ ?)[/code]s*/ies", "codedisp('\1')", $message);
$message = preg_replace("/s*[html](.+?)[/html]s* /ies", "htmldisp('\1')", $message);



中国語の文字を一致させるための正規表現: [u4e00-u9fa5]
コメント: 中国語の一致は非常に頭の痛い問題ですが、この表現を使用すると簡単に処理できます
全角文字 (中国語を含む) の一致: [^x00- xff]
コメント: 文字列の長さの計算に使用できます (全角文字の長さは 2 としてカウントされ、ASCII 文字の長さは 1 としてカウントされます)
空白行と一致するための正規表現: ns*r
コメント: 空行の削除に使用可能
HTML タグに一致する正規表現: <(S*?)[^>]*>.*?|<.*?
コメント: インターネット上で出回っている バージョンが悪すぎます。上記のバージョンは一部しか一致せず、複雑なネストされたタグにはまだ無力です。
先頭と末尾の空白文字を一致させるための正規表現: ^s*|s*$
コメント: 行の先頭と末尾の空白を削除するために使用できます。文字 (スペース、タブ、フォーム フィードなどを含む)、非常に便利な表現
メール アドレスを一致させるための正規表現: w+([-+. ]w+)*@w+([-.]w+)* .w+([-.]w+)*
コメント: フォームの検証に非常に役立ちます
URL に一致する正規表現: [a-zA-z]+:// [^s]*
コメント: インターネット上で流通しているバージョン 機能は非常に限られており、基本的には上記のバージョンでニーズを満たすことができます
アカウントが合法であるかどうかを照合します (文字で始まり、5 ~ 16 バイトが許可され、英数字のアンダースコアは許可されます)許可されています): ^[a-zA-Z][a-zA-Z0-9_]{ 4,15}$
コメント: フォームの検証に非常に役立ちます
一致する国内電話番号: d{3}-d{8}| d{4}-d{7}
コメント: 0511-4405222 や 021-87888822 などの一致形式
Tencent QQ 番号と一致: [1-9][0-9]{4,}
コメント: Tencent QQ 番号で始まる10000 から
中国の郵便番号と一致します: [1-9]d{5}(?!d)
コメント: 中国の郵便番号は 6 桁です
ID カードと一致します: d{15}|d{18}
コメント: 中国の IDカードは 15 桁または 18 桁です
一致する IP アドレス: d+.d+.d+.d+
コメント: IP アドレスを抽出する場合に役立ちます: 特定の数値と一致します:
^[1-9]d*$ // 正の整数と一致します
^-[ 1-9]d*$ // 負の整数と一致
^-?[1- 9]d*$ // 整数と一致
^[1-9]d*|0$ // 負でない整数 (正の整数) と一致+ 0)
^-[1-9]d*|0$ // 負でない整数と一致する 正の整数 (負の整数 + 0)
^[1-9]d*.d*|0.d*[1 -9]d*$ //正の浮動小数点数と一致
^-([1-9]d* .d*|0.d*[1-9]d*)$ //負の浮動小数点数と一致
^-?([1-9]d*.d*|0.d*[1-9]d* |0?.0+|0)$ // 浮動小数点数と一致します
^[1-9] d*.d*|0.d*[1-9]d*|0?.0+|0$ // 負でない浮動小数点数 (正の浮動小数点数 + 0) に一致します
^(-([1 -9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //非正の浮動小数点数(負の浮動小数点数 + 0)と一致します
コメント: 大量のデータを処理する場合に便利です。特定のアプリケーションでの修正に注意してください
特定の文字列に一致:
^[A-Za-z]+$ //26 で一致 大文字の 26 文字の英字で構成される文字列
^[A-Z] ]+$ // 26 個の大文字の英字で構成される文字列と一致します
^[a-z]+$ // 26 個の小文字の英文字で構成される文字列と一致します
^[A-Za-z0-9]+$ // 文字列と一致します数字と 26 個の英字で構成される
^w+$ // 数字、26 個の英字、またはアンダースコアで構成される文字列と一致します

以下は一部の特殊文字です:
正規表現の特殊文字: (学習参考書-文字
意味: 文字の場合、通常は文字通りの意味を意味し、次の文字が特殊文字であることを示し、アクションの説明はありません。
例: /b/ は文字「b」に一致します。b の前にバックスラッシュを追加すると、つまり /b/ となり、その文字は特殊文字になり、
が単語の分割線に一致することを示します。
または:
いくつかの文字については、通常、それらが特別であると述べられ、次の文字が特別ではなく、文字通りに解釈されるべきであることを示します。
例: * は特殊文字で、任意の数の文字 (0 文字を含む) に一致します。たとえば、/a*/ は 0 個以上の a に一致することを意味します。
リテラル * に一致するには、a の前にバックスラッシュを追加します。たとえば、/a*/ は 'a*' に一致します。

Character^
意味: 一致する文字が先頭になければならないことを示します。
例: /^A/ は、「an A」の「A」とは一致しませんが、「An A.」の最初の「A」と一致します。

文字 $
意味: ^ と同様、最後の文字と一致します。
例: /t$/ は、「eater」の「t」とは一致しませんが、「eat」の「t」とは一致します。

文字 *
意味: * より前の文字と 0 回または n 回一致します。
例: /bo*/ は、「A ghost booooed」の「boooo」または「A Bird warbled」の「b」に一致しますが、「A goat g
runted」の文字には一致しません。

文字 +
意味: + 記号の前の文字と 1 回または n 回一致します。 {1,} と同等。
例: /a+/ は、「candy」の「a」と「caaaaaaandy」のすべての「a」に一致します。

文字?
意味: 0 回または 1 回前の文字と一致します。
例: /e?le?/ は、「angel」の「el」と「angle.」の「le」に一致します。

文字。
意味: (小数点) は改行文字を除くすべての単一文字に一致します。
例: /.n/ は、「いいえ、リンゴが木の上にあります」の 'an' と 'on' には一致しますが、'nay' には一致しません。


文字 (x)
意味: 'x' と一致し、一致する値を記録します。
例: /(foo)/ は、「foo bar」の「foo」と一致し、記録します。一致する部分文字列は、結果配列の要素 [1]、...、[n] によって、または RegExp オブジェクトのプロパティ $1、...、$9 によって返されます。

文字 x|y
意味: 'x' または 'y' と一致します。
例: /green|red/ は、「green apple」の「green」と「red apple」の「red」に一致します。

文字 {n}
意味: ここでの n は正の整数です。最初の n 文字と一致します。
例: /a{2}/ は、「candy」の「a」とは一致しませんが、「caandy」のすべての「a」と、「caaandy.」の最初の 2 つの
'a には一致します。

文字 {n,}
意味: ここでの n は正の整数です。少なくとも n 個前の文字と一致します。
例: /a{2,} は、「candy」の「a」には一致しませんが、「caandy」のすべての「a」と「caaaaaaandy」のすべての「a」に一致します。

文字 {n,m}
意味: ここでの n と m は両方とも正の整数です。少なくとも n 個、最大で m 個前の文字と一致します。
例: /a{1,3}/ は、「cndy」のどの文字とも一致しませんが、「candy,」の「a」、「caandy,」の最初の 2 つの「a」と「caaaaaaandy」には一致します。 「caaaaaaandy」の最初の 3 つの「a」に注意してください。「caaaaaaandy」に多くの「a」がある場合でも、一致するのは最初の 3 つの「a」、つまり「aaa」のみです。

Character [xyz]
意味: リスト内の任意の文字と一致する文字のリスト。ハイフン - を使用して文字の範囲を指定できます。
例: [abcd] は [a-c] と同じです。これらは、「brisket」の「b」と「ache」の「c」に一致します。

Character[^xyz]
意味: 1 文字の補数。つまり、リストされた文字を除くすべてに一致します。 ハイフンを使用して、
文字の範囲を示すことができます。
例: [^abc] と [^a-c] は同等で、最初に「brisket」の「r」と「chop.」の「h」に一致します。

文字
意味: スペースに一致します (b と混同しないでください)

文字 b
意味: スペースなどの単語の分割線に一致します (b と混同しないでください)
例: /bnw/ /wyb/ は「noonday」の「no」に一致し、/wyb/ は「おそらく昨日」の「ly」に一致します。

文字 B
意味: 単語の非改行行と一致します
例: /wBn/ は「正午」の「on」と一致し、/yBw/ は「おそらく昨日」の「ye」と一致します。

Character cX
意味: ここの X は制御文字です。制御文字の文字列と一致します。
例: /cM/ は文字列内の control-M と一致します。

文字 d
意味: [0-9] に相当する数値と一致します。
例: /d/ または /[0-9]/ は、「B2 はスイート番号です」の「2」と一致します。

文字 D
意味: [^0-9] に相当する、数値以外の任意の文字に一致します。
例: /D/ または /[^0-9]/ は、「B2 はスイート番号です。」の「B」と一致します。

文字 f
意味: フォーム文字と一致する

文字 n
意味: 改行文字と一致する

文字 r
意味: 復帰文字と一致する

文字 s
意味: スペースを含む単一の空白文字と一致する、タブ、フォームフィード、改行文字、[fnrtv]に相当します。
例: /sw*/ は、「foo bar.」の「bar」と一致します。

文字 S
意味: [^ fnrtv] に相当する、空白文字を除く 1 つの文字と一致します。
例: /S/w* は、「foo bar.」の「foo」に一致します。

Character t
意味: タブ文字と一致します

Character v
意味: 先頭のタブ文字と一致します

Character w
意味: [A-Za-z0 -9_] に相当する、すべての数字、文字、アンダースコアと一致します。
例: /w/ は、「apple,」の「a」、「$5.28」の「5」、「3D.」の「3」に一致します。

文字 W
意味: [^A-Za-z0-9_] に相当する、数字、文字、アンダースコアを除く他の文字と一致します。
例: /W/ または /[^$A-Za-z0-9_]/ は、「50%.」の '%' に一致します。

文字 n
意味: ここでの n は正の整数です。正規表現の最後の部分文字列に一致する n の値 (左括弧を数える)。

例: /apple(,)sorange1/ は、「apple、orange、cherry、peach.」の「apple、orange」と一致します。以下に、より完全な例があります

注: 左括弧内の数値が n で指定された数値より小さい場合、n は次の行の 8 進エスケープを説明として受け取ります。

文字 oooctal と xhex
意味: ここでの oooctal は 8 進数のエスケープ値、xhex は 16 進数のエスケープ値で、ASCII コードを正規表現に埋め込むことができます。