Heim >Schlagzeilen >Vollständige Wissenspunkte zu str_replace in PHP
ein php str_replace preg
Die Daten, die wir mit Programmen verarbeiten müssen, sind nicht immer im Voraus mit Datenbankdenken entworfen oder können nicht in der Datenbankstruktur gespeichert werden von.
Zum Beispiel Parsing-Vorlagen der Template-Engine, Filterung sensibler Spam-Informationen usw.
Im Allgemeinen verwenden wir in diesem Fall reguläre Ausdrücke, um preg_match abzugleichen und preg_replace gemäß unseren Regeln zu ersetzen.
Aber in allgemeinen Anwendungen sind sie nichts anderes als Datenbank-CRUD, und es gibt nur sehr wenige Möglichkeiten, mit regulären Ausdrücken herumzuspielen.
Nach dem, was zuvor gesagt wurde, gibt es zwei Szenarien: statistische Analyse mit Matching-Verarbeitung und Ersetzung.
PHP preg_replace() reguläre Ersetzung. Im Gegensatz zur regulären Javascript-Ersetzung ersetzt PHP preg_replace() standardmäßig alle Elemente, deren Symbole den Bedingungen entsprechen.
Reguläre Ausdrücke sind in den meisten Sprachen ähnlich, es gibt jedoch subtile Unterschiede.
PHP-regulärer Ausdruck
preg_replace (正则表达式, 替换成, 字符串, 最大替换次数【默认-1,无数次】, 替换次数)
Regelmäßige Zeichen | Regelmäßige Erklärung | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Markieren Sie das nächste Zeichen als Sonderzeichen, oder ein Literalzeichen, ein Rückverweis oder ein oktales Escape-Zeichen. Beispielsweise entspricht „n“ dem Zeichen „n“. „\n“ entspricht einem Zeilenumbruchzeichen. Die Sequenz „\“ entspricht „“ und „(“ entspricht „(“. | |||||||||||||||||||||
^ | entspricht dem Anfang der Eingabezeichenfolge. Wenn das RegExp-Objekt festgelegt ist Das mehrzeilige Attribut ^ entspricht auch der Position nach „n“ oder „r“ | ||||||||||||||||||||
$ | entspricht der Endposition der Eingabezeichenfolge, sofern festgelegt Entspricht auch der Position vor „n“ oder „r“. | ||||||||||||||||||||
* | entspricht dem vorhergehenden Unterausdruck null oder mehrmals. zoo". *Entspricht {0,} | ||||||||||||||||||||
stimmt ein oder mehrere Male mit dem vorherigen Unterausdruck überein. . Beispielsweise kann „zo+“ mit „zo“ übereinstimmen, aber nicht mit „z“ . + entspricht {1,} | ? | ||||||||||||||||||||
{n} | n ist eine nicht negative Ganzzahl, die eine bestimmte Anzahl von Malen übereinstimmt. Zum Beispiel , „o{2}“ kann nicht mit dem „o“ in „Bob“ übereinstimmen, kann jedoch mit zwei o in „food“ übereinstimmen. negative Ganzzahl. Beispielsweise kann „o{. 2,}“ nicht mit dem „o“ in „Bob“ übereinstimmen, aber es kann mit allen „o“ in „foooood“ übereinstimmen. „o{0,}“ ist äquivalent zu „o*“. ;=m stimmt mindestens n-mal überein. Beispielsweise entspricht „o{1,3}“ den ersten drei o in „foooood“. . Beachten Sie das Komma und die beiden Zahlen zwischen | ||||||||||||||||||||
? | , wenn diesem Zeichen ein anderer Begrenzer (*,+,?, {n},{n, }, {n,m}), der Abgleichsmodus ist nicht gierig. Der nicht gierige Modus entspricht so wenig der gesuchten Zeichenfolge wie möglich, während der standardmäßige gierige Modus so viel wie möglich mit der gesuchten Zeichenfolge übereinstimmt Zeichenfolge wie möglich. Beispielsweise entspricht „o?“ einem einzelnen „o“, während „o+“ allen „o“s entspricht . Punkte | ||||||||||||||||||||
(Muster) | Vergleichen Sie das Muster und erhalten Sie diese Übereinstimmung. Die erhaltene Übereinstimmung kann aus der generierten Matches-Sammlung mithilfe der SubMatches-Sammlung in VBScript und dem Attribut $0...$9 in JScript abgerufen werden. Um Klammerzeichen zuzuordnen, verwenden Sie „(“ oder „)“.|||||||||||||||||||||
stimmt mit dem Muster überein, erhält aber nicht das passende Ergebnis, was bedeutet, dass es sich um eine nicht erhaltende Übereinstimmung handelt und nicht für die spätere Verwendung gespeichert wird. Dies ist nützlich, wenn Sie Teile eines Musters mit dem oder-Zeichen „(|)“ kombinieren. Beispielsweise ist „industr(?:y|ies)“ ein einfacherer Ausdruck als „industry|industries“. | |||||||||||||||||||||
Positive positive Suche, Übereinstimmung mit der Suchzeichenfolge am Anfang eines beliebigen Zeichenfolgenübereinstimmungsmusters. Dies ist eine Nicht-Abruf-Übereinstimmung, d. h. die Übereinstimmung muss nicht zur späteren Verwendung abgerufen werden. Beispielsweise kann „Windows(?=95|98|NT|2000)“ mit „Windows“ in „Windows2000“ übereinstimmen, aber nicht mit „Windows“ in „Windows3.1“. Beim Vorabruf werden keine Zeichen verbraucht, d. h. nach einer Übereinstimmung beginnt die Suche nach der nächsten Übereinstimmung unmittelbar nach der letzten Übereinstimmung und nicht nach dem Zeichen, das den Vorabruf enthält. | |||||||||||||||||||||
Vorwärtsnegative Suche, wobei die Suchzeichenfolge am Anfang jeder Zeichenfolge abgeglichen wird, die nicht mit dem Muster übereinstimmt. Dies ist eine Nicht-Abruf-Übereinstimmung, d. h. die Übereinstimmung muss nicht zur späteren Verwendung abgerufen werden. Beispielsweise kann „Windows(?!95|98|NT|2000)“ mit „Windows“ in „Windows3.1“ übereinstimmen, aber nicht mit „Windows“ in „Windows2000“. | |||||||||||||||||||||
Die umgekehrte positive Vorprüfung ähnelt der vorwärts gerichteten positiven Vorprüfung, jedoch in die entgegengesetzte Richtung. Beispielsweise kann „(?<=95|98|NT|2000)Windows“ mit „Windows“ in „2000Windows“ übereinstimmen, aber nicht mit „Windows“ in „3.1Windows“. | |||||||||||||||||||||
entspricht x oder y. Beispielsweise entspricht „z|food“ „z“ oder „food“. „(z|f)ood“ entspricht „zood“ oder „food“. | |||||||||||||||||||||
Zeichensatz. Entspricht einem der enthaltenen Zeichen. Beispielsweise würde „[abc]“ mit dem „a“ in „plain“ übereinstimmen. | |||||||||||||||||||||
[^xyz] | Eine Reihe von Zeichen mit negativem Wert. Entspricht jedem Zeichen, das nicht enthalten ist. Beispielsweise würde „[^abc]“ mit „plin“ in „plain“ übereinstimmen. | ||||||||||||||||||||
[a-z] | Zeichenbereich. Entspricht jedem Zeichen innerhalb des angegebenen Bereichs. „[a-z]“ entspricht beispielsweise jedem Kleinbuchstaben im Bereich „a“ bis „z“. Hinweis: Nur wenn der Bindestrich innerhalb der Zeichengruppe und zwischen zwei Zeichen steht, kann er den Zeichenbereich darstellen; wenn er am Anfang der Zeichengruppe steht, kann er nur den Bindestrich selbst darstellen 🎜> | [^a-z]||||||||||||||||||||
b | |||||||||||||||||||||
B | |||||||||||||||||||||
cx | |||||||||||||||||||||
d | |||||||||||||||||||||
D | |||||||||||||||||||||
f | |||||||||||||||||||||
n | |||||||||||||||||||||
r | |||||||||||||||||||||
s | |||||||||||||||||||||
S | |||||||||||||||||||||
t | |||||||||||||||||||||
v | |||||||||||||||||||||
w | |||||||||||||||||||||
W | |||||||||||||||||||||
xn | |||||||||||||||||||||
num | |||||||||||||||||||||
n | |||||||||||||||||||||
nm | |||||||||||||||||||||
nml | |||||||||||||||||||||
un | |||||||||||||||||||||
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
例子 1
使用带有数组和 count 变量的 str_replace() 函数:
<?php $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; ?>
例子 2
使用带有需要替换的元素少于查找到的元素的 str_replace() 函数:
<?php $find = array("Hello","world"); $replace = array("B"); $arr = array("Hello","world","!"); print_r(str_replace($find,$replace,$arr)); ?>
四.php str_irreplace
实例
把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai":
<?php echo str_replace("world","Shanghai","Hello world!"); ?>
定义和用法
str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写)。
该函数必须遵循下列规则:
如果搜索的字符串是数组,那么它将返回数组。
如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。
如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换
如果查找的是数组,而替换的是字符串,那么替代字符串将对所有查找到的值起作用。
注释:该函数区分大小写。请使用 str_ireplace() 函数执行不区分大小写的搜索。
注释:该函数是二进制安全的。
语法
str_replace(find,replace,string,count)
参数 | 描述 |
---|---|
find | 必需。规定要查找的值。 |
replace | 必需。规定替换 find 中的值的值。 |
string | 必需。规定被搜索的字符串。 |
count | 可选。对替换数进行计数的变量。 |
例子 1
使用带有数组和 count 变量的 str_replace() 函数:
<?php $arr = array("blue","red","green","yellow"); print_r(str_replace("red","pink",$arr,$i)); echo "替换数:$i"; ?>
例子 2
使用带有需要替换的元素少于查找到的元素的 str_replace() 函数:
<?php $find = array("Hello","world"); $replace = array("B"); $arr = array("Hello","world","!"); print_r(str_replace($find,$replace,$arr)); ?>
五 .php str_split
PHP函数split()的基本语法为:array split ( string $pattern, string $string [, int $limit] )。我们向大家举了两个例子来具体讲解这个函数的使用方法。
对于初学者来说,掌握PHP中常用函数的用法,是其继续学习的基础。今天我们就为大家详细介绍有关PHP函数split()的一些使用方法,希望大家能通过这篇文章介绍的内容增加自己的知识库。
说明
array split ( string $pattern, string $string [, int $limit] )
提示
preg_split() 函数使用了 Perl 兼容正则表达式语法,通常是比PHP函数split()更快的替代方案。如果不需要正则表达式的威力,则使用 explode() 更快,这样就不会招致正则表达式引擎的浪费。
本函数返回一个字符串数组,每个单元为 string 经区分大小写的正则表达式 pattern 作为边界分割出的子串。如果设定了 limit,则返回的数组最多包含 limit 个单元,而其中最后一个单元包含了 string 中剩余的所有部分。如果出错,则 split() 返回 FALSE。
将 /etc/passwd 中的前四个字段分割出来:
例 1839. PHP函数split()例子
深入PHP nl2br()格式化输出的详解
<?php list($user, $pass, $uid, $gid, $extra) = split (":", $passwd_line, 5); ?>
如果字符串中有 n 个与 pattern 匹配的项目,则返回的数组将包含 n+1 个单元。例如,如果没有找到 pattern,则会返回一个只有一个单元的数组。当然,如果 string 为空也是这样。
解析可能用斜线,点,或横线分割的日期:
例 1840. PHP函数split()例子
<?php // 分隔符可以是斜线,点,或横线 $date = "04/30/1973"; list($month, $day, $year) = split ('[/.-]', $date); echo "Month: $month; Day: $day; Year: $year<br />\n"; ?>
想仿效 Perl 中类似的 @chars = split('', $str) 行为,请参考 preg_split() 或 str_split() 函数中的例子。
注意 pattern 是一个正则表达式。如果想要用的分割字符是正则表达式中的特殊字符,要先将其转义。如果觉得PHP函数split()(或其它任何 regex 函数)行为古怪的话,请阅读包含在 PHP 发行包中 regex/ 子目录下的 regex.7 文件。该文件是手册页面格式,可以用类似 man /usr/local/src/regex/regex.7 的命令来阅读